六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 132|回复: 0

了解javascript编程中的Prototype(原型)

[复制链接]

升级  67%

271

主题

271

主题

271

主题

进士

Rank: 4

积分
835
 楼主| 发表于 2013-1-29 08:47:21 | 显示全部楼层 |阅读模式
日期:2012-5-16  来源:GBin1.com

当你定义javascript方法的时候,会产生一些预定义的属性,其中一个比较让人迷惑的属性就是prototype。在本文中,我们将详细介绍什么是Prototype,并且为什么使用prototype。
什么是prototype?

prototype属性初始时是一个空的对象,可以添加对象 ,你可以添加任何对象到它里面去。
var myObject = function(name){    this.name = name;    return this;};console.log(typeof myObject.prototype); // objectmyObject.prototype.getName = function(){    return this.name;};在以上这段代码中,我们创建了一个方法,但是如果我们调用myObject(),将会返回window对象,因为它被定义在全局范围中。 this将会返回全局对象,因为没有被实例化。
console.log(myObject() === window); // true秘密的连接

每一个javascript中的对象都有一个秘密属性。 
在我们继续之前,我想讨论一下决定prototype工作方式的“秘密”连接。
每一个javascript对象在定义或者实例化的时候都会添加一个秘密的属性,叫__proto__,这决定了prototype链如何被访问。然而,在你的应用中访问这个__proto__属性绝对不是一个好主意,因为不是所有浏览器都可访问。
__prototype__属性在一个对象的prototype中不应该被弄混了, 因为它有两个分开的属性;意味着他们都是手拉手来使用的。对于弄清楚这个很重要。因为最开始的时候肯定比较令人迷惑。 那究竟什么意思呢? 这里我们解析一下。 当我们创建myObject方法时,我们定义了一个Function类型的对象。
console.log(typeof myObject); // function如果你不知道的话, Function是一个javascript预定义的对象,这样的话,拥有自己的属性(例如,length和arguments)和方法(例如,call和apply)。这意味着,在javascript的引擎中,这里有类似如下代码的部分:
.....
.....
来源:了解javascript编程中的Prototype(原型)
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表