javascript - javascript创建对象的两种方式

标签 javascript jquery json object stringify

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

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

var a = new field("market","Mkt").

然后我将 a 分配给另一个对象。

object.newField = a;

第二种方式是直接创建一个新属性

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

我尝试读取其他函数中的对象。它们的行为不同,但是,当我将对象字符串化时,它看起来没问题。我创建的两个属性有什么区别?

顺便问一下,下面的对象有什么不同吗?

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

最佳答案

区别在于,第一种情况下,创建的对象继承自field.prototype,然后是Object.prototype(即其内部的[[Prototype]]是field.原型(prototype),其内部 [[Prototype]] 是 Object.prototype),在第二种情况下,它仅继承自 Object.prototype

另一种看待它的方式是:

object.newField instanceof field; // true
object.newField instanceof Object; // true

object.newField2 instanceof field; // false
object.newField2 instanceof Object; // true

或者继承链是:

object.newField  -> field.prototype -> Object.prototype -> null

object.newField2 -> Object.prototype -> null

其中 '->' 表示“继承自”。

关于javascript - javascript创建对象的两种方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658631/

相关文章:

javascript - 删除模板中的 django url 前缀

javascript - 是否可以在没有回调函数的情况下从 setTimeout 返回一个值?

jquery - Bootstrap 表 : Exclude ID column from being sorted

javascript - 如何通过单击按钮调整div的大小并使其变为全屏

javascript - 如何更改复选框遵循 JSON 字符串?

javascript - hasOwnProperty 与 propertyIsEnumerable

php - 单击按钮自动登录另一个网站 - cURL 或 Javascript?

java - 使用 jQuery 清除表单字段错误类

c# - 反序列化到 List<string> 字段时出现 "Unexpected character encountered while parsing value: [."异常

jquery - 在 jQuery Ajax POST 中序列化 JSON 数据包