-
实例属性,静态属性与原型属性
实例属性定义在实例上,可以在构造函数的内部的this上进行定义,也可以在构造函数实例化以后的实例上进行定义。
静态属性,定义在构造函数之上的属性。可通过构造函数直接访问。
原型属性,定义在构造函数原型对象之上的属性。
-
实例方法,静态方法与原型方法
实例方法定义在实例上,可以在构造函数内部的this上进行定义,也可以在构造函数实例化以后的实例上进行定义。
静态属性,定义在构造函数之上的属性。可通过构造函数直接访问。
原型属性,定义在构造函数原型对象之上的属性。
function Person(name) {
this.name = name;
// 在构造函数内部的this上进行定义实例属性
this.sayIn = function() {
console.log('my name is ', this.name);
}
}
// 在构造函数上定义静态方法
Person.eat = function(){console.log('i can eat anything')};
// 在构造函数的原型对象上定义原型方法
Person.prototype.run = function(){console.log('i can run 100m in 9.88s')}
let person = new Person('li');
// 在构造函数生成的实例上定义实例方法
person.sayOut = function(){
console.log('my name is out ', this.name);
}
// 访问实例方法sayIn
person.sayIn(); // my name is li
// 访问实例方法sayOut
person.sayOut(); // my name is li
// 访问静态方法eat
Person.eat(); // i can eat anything
// 访问原型方法run
person.run(); // i can run 100m in 9.88s
// 通过构造函数访问原型方法
Person.prototype.run() // i can run 100m in 9.8
function Person(name){
// 在构造函数内部的this上进行定义实例属性
this.name = name;
}
// 在构造函数上定义静态属性
Person.sex = 'male';
// 在构造函数的原型对象上定义原型属性
Person.prototype.weight = 20
let person = new Person('wang');
// 在构造函数实例化以后的对象上进行定义实例属性
person.age = 23;
// 访问实例属性name
console.log(person.name) // wang
// 访问实例属性age
console.log(person.age) // 23
// 访问静态属性sex
console.log(Person.sex) // male
// 访问原型属性weight
console.log(person.weight) // 20
// 通过构造函数访问原型属性weight
console.log(Person.prototype.weight); // 20