您的位置:首页 > Web前端 > JavaScript

欢迎使用CSDN-markdown编辑器

2015-06-20 22:46 591 查看
JavaScript中与原型相关的常用方法:

getPrototypeOf(), delete, hasOwnProperty(), in, Object.keys(), Object.getOwnPropertyNames().

先定义一个Person类模板,用这个类模板来讲解一下与原型相关的常用方法。

function Person(){}

Person.prototype.name = ‘张三’;

Person.prototype.age = ‘20’;

Person.prototype.sayName = function(){

console.log(“My name is ”+this.name);

};

1.getPrototypeOf():获得一个实例的原型

var p1 = new Person();

var p2 = new Person();

console.log( Object.getPrototypeOf(p1) );

console.log( Object.getPrototypeOf(p1) == Person.prototype );

console.log( Object.getPrototypeOf(p1) == Object.getPrototype(p2) );

Delete: 删除实例自身属性

p1.name = “李四”;

p1.sayName();

p2.sayName();

delete p1.name;

p1.sayName();

hasOwnProperty():判断某属性是不是该实例自身的属性

console.log( p1.hasOwnProperty(name) );

p1.name = “李四”;

console.log( p1.hasOwnProperty(name) );

In: 判断某属性是不是该实例原型链中的属性

console.log( ‘name’ in p2 );

写一个方法判断一个属性是不是这个实例的原型链中的属性:

function isPropertyOfPrototype( object, property ){

return !object.hasOwnProperty(property) && property in object;

}

console.log( p2.hasOwnProperty(‘name’) );

Console.log( isPropertyOfPrototype(p2, ‘name’) );

Object.keys(): 获得实例的所有自身属性,

console.log( Object.keys(p2));

p2.name = “王五”;

p2.age = 25;

console.log( Object.keys(p2) );

console.log( Object.key(Person.prototype) );

Object.getOwnPropertyNames(): ECMA5: constructor属性是不能被枚举的,Object.getOwnPropertyNames可以枚举对象的所有属性,包括constructor

console.log( Object.getOwnPropertyNames(Person.prototype) );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript prototype