原型-----常用方法详解
2016-07-15 10:43
274 查看
function person(){ } person.prototype.name = 'z3'; person.prototype.age = 20; person.prototype.sayName = function(){ alert('原型方法'); } var p1 = new person(); /* Object.getPrototypeOf:根据实例对象获得原型对象 var obj = Object.getPrototypeOf(p1); console.log(person.prototype == obj); */ /* 每次代码读取一个对象属性的时候,首先会进行一次搜索,搜索实例对象里的name属性,看看有没有 如果没有,就去p1原型对象里搜索name属性,如果有就返回,没有就返回undefined p1.name='123'; console.log(p1.name); */ //判断一个对象属性,是原型属性还是实例属性 var p2 = new person(); p2.name='zxcv'; //console.log(p1.hasOwnProperty('name')); //原型属性:false //console.log(p2.hasOwnProperty('name')); //实例属性:true /* in:操作符,判断是否存在原型对象或者实例对象中 */ console.log('name' in p1); /* 判断一个属性,是否在原型中 在原型对象中,是否存在这个属性, 第一个参数:当前对象 第二个参数:要判断的属性 */ function hasPrototypeProperty(object,name){ return !object.hasOwnProperty(name) && name in object; } var p3 = new person(); p3.name = 'xiao A'; console.log(p3.name); console.log(hasPrototypeProperty(p3,'name')); /* ECMA5新特性:Object.keys(); 拿到当对象所有的key,返回一个对象 */ var p4 = new person(); p4.name='p4'; p4.age = 10; var arr = Object.keys(p4); console.log(arr); var arr2 = Object.keys(person.prototype); console.log(arr2); /* ECMA5中,constructor属性:constructor属性不能被美枚举[eable = false] Object.getOwnpropertyNames:枚举对象所有属性,不管该内部属性能否被枚举 */ var arr3 = Object.getOwnPropertyNames(person.prototype); console.log(arr3);
相关文章推荐
- Python动态类型的学习---引用的理解
- 土人系列AS入门教程 -- 对象篇
- 交换机升级排障实例
- PostgreSQL教程(三):表的继承和分区表详解
- C#托管堆对象实例包含内容分析
- C#实现获取不同对象中名称相同属性的方法
- Lua面向对象之类和继承浅析
- 浅析Ruby中继承和消息的相关知识
- javascript asp教程第十一课--Application 对象
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- VBS教程:对象-正则表达式(RegExp)对象
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- C#检查指定对象是否存在于ArrayList集合中的方法
- sql2008启动代理未将对象应用到实例解决方案
- C#编程自学之类和对象
- C++中对象的常引用、动态建立和释放相关知识讲解
- C++实现不能被继承的类实例分析
- C++之类和对象课后习题简单实例
- C# 面向对象三大特性:封装、继承、多态