相关疑难解决方法(0)

JavaScript中的原型OO

TL; DR:

我们是否需要原型OO中的工厂/施工人员?我们可以做一个范例切换并完全删除它们吗?

BackStory:

我最近一直在玩JavaScript中的原型OO并发现在JavaScript中完成的99%的OO正在强制使用经典的OO模式.

我对原型OO的看法是它涉及两件事.方法(和静态数据)的静态原型和数据绑定.我们不需要工厂或建造者.

在JavaScript中,这些是包含函数和的对象文字Object.create.

这意味着我们可以将所有内容建模为静态蓝图/原型和数据绑定抽象,最好直接连接到文档样​​式的数据库中.即,从数据库中取出对象,并通过使用数据克隆原型来创建对象.这意味着没有构造函数逻辑,没有工厂,没有new.

示例代码:

一个伪示例是:

var Entity = Object.create(EventEmitter, {
    addComponent: {
        value: function _addComponent(component) {
            if (this[component.type] !== undefined) {
                this.removeComponent(this[component.type]);
            }

            _.each(_.functions(component), (function _bind(f) {
                component[f] = component[f].bind(this);
            }).bind(this));

            component.bindEvents();

            Object.defineProperty(this, component.type, {
                value: component,
                configurable: true
            });

            this.emit("component:add", this, component);
        }
    },
    removeComponent: {
        value: function _removeComponent(component) {
            component = component.type || component;

            delete this[component];

            this.emit("component:remove", this, component);
        }
    }
}

var entity = Object.create(Entity, toProperties(jsonStore.get(id)))
Run Code Online (Sandbox Code Playgroud)

小解释:

特定代码很冗长,因为ES5很冗长. …

javascript oop prototypal-inheritance node.js ecmascript-5

43
推荐指数
2
解决办法
4462
查看次数

在javascript中创建对象的两种方法

我正在通过执行以下操作来创建javascript对象:

function field(name,label){
        this.name = name
        this.label= label;
}

var a = new field("market","Mkt").
Run Code Online (Sandbox Code Playgroud)

然后我分配给另一个对象.

object.newField = a;
Run Code Online (Sandbox Code Playgroud)

第二种方法是直接创建新属性

object.2ndNewField = {
    name: "market2",
    label:"Mkt2"
}
Run Code Online (Sandbox Code Playgroud)

我尝试读取其他功能中的对象.但是,当我对对象进行字符串化时,它们表现不一样.我创建的两个属性之间有什么区别?

顺便问一下这个对象有什么区别吗?

 object.2ndNewField = {
        "name": "market2",
        "label":"Mkt2
    }
Run Code Online (Sandbox Code Playgroud)

javascript jquery json object stringify

7
推荐指数
1
解决办法
776
查看次数