prototype
我们创建的每个函数都有一个prototype(原型)属性,这个属性时一个指针,指向一个对象(函数的原型对象),这个对象的用途是可以由特定类型的所有实例共享属性和方法。在默认情况下所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。
function Person(){
};
Person.prototype.name = 'jeck';
Person.prototype.sayName = function(){
console.log(this.name)
};
var p1 = new Person('jeck', 13);
p1.sayName(); //jeck
var p2 = new Person('andy', 22);
p2.sayName(); //jeck
Person.prototype指向原型对象
Person.prototype.constructor又返回指向Person
hasOwnProperty()
检测一个属性是否存在于实例中,还是存在于原型中。
function Person(){};
Person.prototype.name = 'jeck';
var person1 = new Person();
person1.hasOwnProperty('name'); //false
person1.name = 'andy';
person1.hasOwnProperty('name'); //true
原型与in操作符
通过对象能够访问给定属性时返回true,无论实在实例中还是原型中。
Object.keys()
通过此方法可以取得对象上所有可枚举的实例属性。
function Person(){};
Person.prototype.name = 'jeck';
Person.prototype.age= '12';
Person.prototype.sex= 'M';
console.log(Object.keys(Person.prototype)); //[name age sex]
var person1 = new Person();
person1.name = 'andy';
console.log(Object.keys(person1)); //[name]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。