2种JS中创建对象的方法有何区别?

小卒过河 发布于 2011/07/12 09:57
阅读 747
收藏 0

我创建JavaScript对象,如下:

function field(name,label){         this.name = name
        this.label= label; } var a = new field("market","Mkt"). 

然后分配到另外一个对象。

object.newField = a; 

第二种方式,直接创建新的属性:

object.2ndNewField = {     name: "market2",     label:"Mkt2
}

我试在其他函数读取对象。他们表现不同,然而,当我字符串化对象,就看起来是OK的。我创建的2个属性之间有何不同?

顺便问一下,下面的对象有何不同?

 object.2ndNewField = {         "name": "market2",         "label":"Mkt2
    }
加载中
1
我是潮汐
我是潮汐

区别就是第一种方式你可以重用,而且构造函数是被你复写了的.

第二种构造函数是原始的.第二种一般称为字面量对象吧.

Aileen
Aileen
@潮汐、: 恩~ 是的~~ 我也说了~~要说最基本的创建对象的方法确实只有两种~~ 调用对象的构造函数创建, 字面量~ 工厂是设计模式里面的概念~~ 为什么要有工厂这种设计模式呢? ~~~~~^
我是潮汐
我是潮汐
@Aileen: 我还是那句话,就两种,一种是基于原型的方式,一种是字面量方式,也就是工厂方法模式, 你不知道工厂模式怎么创建对象,你可以去google. 在你没理解我的意思或者我没理解你的意思之前,我不在浪费口舌.
Aileen
Aileen
@潮汐、: ECMAScript does not use classes such as those in C++, Smalltalk, or Java. Instead objects may be created in various ways including via a literal notation or via constructors which create objects and then execute code that initialises all or part of them by assigning initial values to their properties.
我是潮汐
我是潮汐
@Aileen: 你可以看看ecmascript
Aileen
Aileen
@潮汐、: 你的理论从各种角度来说都是错的~~如果你非说创建对象的方法有两种的话, 应该就是 new Object() 和 字面两种, 字面量的数据读取和存储效率都很高, 并且在创建对象的时候不会调用对象的构造函数~ 其他的 就是 设计模式~~ 你给出的第一个创建方法就是 Constructor Pattern(构造函数模式). 另外楼主也没有理解工厂模式是什么~~
下一页
1
aforbe
aforbe
第二种可以理解为单例。
0
d
daniel_

第二种没有prototype属性 ,不可以new

返回顶部
顶部