javascript中原型对象和实例对象及ECMA5新方法

来源:互联网 发布:qq空间绑定独立域名 编辑:程序博客网 时间:2024/06/05 12:51
<html><head><title>018</title><script type="text/javascript" charset="utf-8">//Object.getPrototypeOf():根据实例对象获得原型对象function Person(){}Person.prototype.name='z3';Person.prototype.age=20;Person.prototype.sayName = function(){alert('我是原型对象的方法');};/*var p1 = new Person();alert(p1.name);//z3var prototypeObj = Object.getPrototypeOf(p1);alert(prototypeObj==Person.prototype);//true*///每次代码读取一个对象的时候:首先会就那些一次搜索:搜索实例对象里name属性,看看有//没有,如果没有再去p2的实例所对应的原型对象里去搜索name属性,如果有就返回,没有返回undefined/*var p2=new Person();p2.name='w5';alert(p2.name);//w5delete p2.name;alert(p2.name);//z3*///判断一个对象属性,是属于原型属性 还是属于实例属性//hasOwnProperty,如果是实例对象自己的属性那么返回true/*var  p3=new Person();p3.name='z6';alert(p3.name);z6alert(p3.hasOwnProperty('name'));//true*///in 操作符:for-in 可以单独使用用来判断是不是属于这个对象,但是无法区分实例还是原型对象/*var p1 = new Person();alert('name' in p1);//truevar p2 = new Person();p2.name = 'w5';alert('name' in p2);//truealert('nameaa' in p2);//false*///我们可以自己定义一个方法用来判断某个属性是否在原型对象中/*function hasPrototypeProperty(object,name){return (!object.hasOwnProperty(name)) && name in object;}//不属于实例对象的属性&&属于原型对象和实例对象=属于原型对象和实例对象var p3=new Person();alert(hasPrototypeProperty(p3,'name'));//truep3.name='w5';alert(hasPrototypeProperty(p3,'name'));//false*///ECMA5新特性 Object.keys();var p1 = new Person();p1.name = 'z3';p1.age = 20;var attributes = Object.keys(p1);alert(attributes);//name agevar attributes2 = Object.keys(Person.prototype);alert(attributes2);//name,age,sayName//ECMA5中 constructor属性:该属性不能被枚举//Object.getOwnPropertyNames 枚举对象所以属性:不管是该内部属性能否被枚举var attributes3=Object.getOwnPropertyNames(Person.prototype);alert(attributes3);//constructor,name,age,sayName//constructor 属性返回对创建此对象的数组函数的引用。</script></head><body></body></html>

阅读全文
0 0
原创粉丝点击