AJax技术

浅析Ajax语法(5)

字号+ 作者:H5之家 来源:H5之家 2017-04-11 17:02 我要评论( )

在 JS 中,读操作通过 proto 会一层一层链下去的结构,就叫 原型链 。 var deepPrototypeObj = { hello: function(){console.log( Hello, my name is + this.name + .); } proto : null}var prototypeObj = { proto

在 JS 中,读操作通过 proto 会一层一层链下去的结构,就叫 原型链 。

var deepPrototypeObj = { hello: function(){ console.log( 'Hello, my name is '+ this.name + '.'); } proto : null } var prototypeObj = { proto : deepPrototypeObj } var xiaoMing = { name : "xiaoMing", proto : prototypeObj } var liLei = { name : "liLei", proto : prototypeObj } xiaoMing.hello(); // Hello, my name is xiaoMing. liLei.hello(); // Hello, my name is liLei.原型继承的实现

在上面的例子中,通过直接修改了 proto 属性值,实现了原型继承。但是在实际生产中,

代替的方式是使用 Object.create() 方法。

调用 Object.create() 方法会创建一个新对象,同时指定该对象的原型对象为传入的第一个参数。

我们将上面的例子改一下。

var prototypeObj = { hello: function(){ console.log( 'Hello, my name is '+ this.name + '.'); } // ... } var xiaoMing = Object.create(prototypeObj); var liLei = Object.create(prototypeObj); xiaoMing.name = "xiaoMing"; liLei.name = "liLei"; xiaoMing.hello(); // Hello, my name is xiaoMing. liLei.hello(); // Hello, my name is liLei.

You-Dont-Know-JS 的作者,对这种原型继承的实现取了一个很好玩的名字 OLOO (objects-linked-to-other-objects) ,这种实现方式的优点是没有使用任何类的概念,只有 object ,所以它是很符合 javaScript 的特性的。

因为JS 中本无类,只有 object 。

无奈的是,喜欢类的程序员是在太多,所以在 ES6 新增了 class 概念。下一篇会讲 class 在 JS 中的实现原理

小结

类创建对象,达到了重用的目的。它基于的逻辑是,两个或多个对象的结构功能类似,可以抽象出一个模板,依照模板 复制 出多个相似的对象。就像自行车制造商一遍一遍地重用相同的蓝图来制造大量的自行车。

使用原型继承,同样可以达到重用的目的。它基于的逻辑是,两个或多个对象的对象有一部分共用属性,可以将共用的属性抽象到另一个独立公共对象上,通过特殊的原型属性,将公共对象和普通对象链接起来,再利用属性读(写)规则进行遍历查找,实现属性 共享 。

以上就是解析javaScript的原型继承的详细内容,更多请关注php中文网其它相关文章!

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
e