作家
登录

理解JavaScript的prototype属性

作者: 来源:www.28hudong.com 2013-03-30 00:33:32 阅读 我要评论

其实,关于prototype只要几句话就可以总结: 任何原型都是对象,只有对象有原型 只有Function有prototype属性,它是这个Function作为构造器时生成对象所继承的原型。Function的原型和它的prototype属性无关 对象的原型可以通过非标准的属性 __proto__ 或ECMAScript5的方法 Object.getPrototypeOf() 访问。 1其实是错的,Object这个原型链尽头的对象它没有原型。可是为了更简单表述。在看原型链后你就会明白.toString()这类没有定义过的方法是怎样来的。 上面说的二义性,是文字理解上的,语法本身没有歧义。prototype是原型的意思,可是一个对象的原型不是由prototype去访问。 Function有prototype属性,可是和自己的原型没有关系。理解这点后,再去看关于原型链、继承的文章就容易理解多了。 下面是些例子,可以加深认识: 复制代码 代码如下: // 任何对象都有原型 obj = {}; console.log( obj.__proto__ ); console.log( Object.getPrototypeOf(obj) ); console.log( obj.__proto__ === Object.getPrototypeOf(obj) ); //对象并没有语法意义的prototype属性 alert(obj.prototype) //undefined //prototype作为一个属性,仅存在于Function中,代表以这个Function创建的新实例集成的原型,和Function本身的原型无关 var F = function(name){ this.name = name; } obj = {a:3, get b (){ return this.a; } }; F.prototype = obj; newObj = new F('new name'); newObj.name; //作为构造器,name是newObj的自身属性 newObj.a; //3 //它继承了obj。可以通过这样证实: Object.getPrototypeOf( newObj ) === obj; // true newObj.__proto__ === obj; //true

  推荐阅读

  设置iframe的document.designMode后仅Firefox中其body.innerHTML为br

重现如下: 复制代码 代码如下: <!doctype html> <html> <head> <title>设置iframe的document.designMode后仅Firefox中其body.innerHTML为br</title> <meta charset="utf-8"> </head> <body> <iframe frameborder=>>>详细阅读


本文标题:理解JavaScript的prototype属性

地址:http://www.17bianji.com/kaifa2/JS/23638.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)