您的位置:首页 > 其它

借用构造函数继承非原型

2015-06-17 15:56 344 查看
function Article() {
this.tag = ["js", "html"];
}
var article = new Article();
var Blogpost = function () {};
Blogpost.prototype = article;
var blog = new Blogpost();
var Page = function() {
Article.call(this, arguments);
};
var page = new Page();
blog.tag.push("aa");
page.tag.push("bb");
console.log(article);


Object {tag: Array[3]}

tag: Array[3]

0: "js"

1: "html"

2: "aa"

length: 3

__proto__: Array[0]

__proto__: Article

constructor: function Article() {

__proto__: Object

blog和article是同一个tag引用。是同一个实例,article。

如果将Blogpost.prototype = new Article();重新new 一个那么实例就不共享了。

new的适合,构造函数的新的实例,但是prototype是共享的。如下所示

function Tree (x) {
this.value = x;
}
Tree.prototype = {
constructor: Tree,
children: [],
addChild: function(x) {
this.children.push(x);
}
}
var tree1 = new Tree(1);
tree1.addChild(1);
var tree2 = new Tree(2);
tree2.addChild(2);
console.log (tree1.children);//[1,2]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: