Javascript 从 1 个对象创建 2 个实例

标签 javascript object javascript-objects

我有两个 DIV 容器,每个容器都包含一个拼图(使用 jquery 可拖动对象实现)。

我还得到了一个如下所示的对象:

var puzzle var puzzle = {
    option1 = [],
    init:function(container) { .... }
}

要为我使用的一个 DIV 开始拼图:

// left puzzle div
var puzzleLeft = puzzle;
puzzleLeft.init(leftContainer);

// right puzzle div
var puzzleRight = puzzle;
puzzleRight.init(leftContainer);

但对于左边的来说它不起作用。我要做的所有事情都发生在右边:/当我取消注释右边的开始代码时,它将适用于左边:) 好像是正确的一开始代码是错误的? 这是创建 2 个拼图实例的错误方法吗?

谢谢 马特

最佳答案

原型(prototype)继承

您的标题为“从 1 个对象创建 2 个实例”。上面写满了原型(prototype)继承。

您可以使用Object.create创建一个继承自另一个对象的对象。

// left puzzle div
var puzzleLeft = Object.create(puzzle);
puzzleLeft.init(leftContainer);

// right puzzle div
var puzzleRight = Object.create(puzzle);
puzzleRight.init(leftContainer);

但是,任何引用对象的属性都需要在 init 函数中设置。像这样的事情:

var puzzle = {

    // Let it be null for now
    option1: null,

    init: function(container) {
        // Set it to empty array inside init
        this.option1 = [ ];
    }

};

这将确保 puzzleLeftpuzzleRight 使用不同的数组。


克隆

如果您使用的是 jQuery 这样的库,另一个选择是简单地克隆对象。

// left puzzle div
var puzzleLeft = $.extend({ }, puzzle);
puzzleLeft.init(leftContainer);

// right puzzle div
var puzzleRight = $extend({ }, puzzle);
puzzleRight.init(leftContainer);

使用 $.extend({ }, someObject) 将复制 someObject

关于Javascript 从 1 个对象创建 2 个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13530327/

相关文章:

javascript - HTML5 语音合成在阅读时缺少一些文本

php - 如何从 CakePHP 3 结果对象中获取第一项

java - String.valueOf(String Object) 的 null 和 "null"有什么区别

java - 当参数之一为 TBD 时,如何初始化对象

javascript - 根据其他数组从javascript中的数组中删除项目

javascript - 移动 Google 广告时,Firefox 中的 JavaScript 出现问题

javascript - 在常量对象中定义所有通量操作类型是常见做法吗?

javascript - 使用 neo4j-graphql-js 时如何访问自定义 graphQL 解析器中的请求 header ?

javascript - javascript中删除对象属性的函数

javascript - 将值设置为引用的 JavaScript 对象