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]

93回忆录
103 声望1 粉丝

« 上一篇
属性类型
下一篇 »
arguments.callee