我正在通过以下方式创建
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" }
我尝试读取其他函数中的对象.但是,当我对对象进行字符串化时,它们表现不同.我创建的两个属性之间有什么区别?
顺便问一下这个对象有什么区别吗?
object.2ndNewField = { "name": "market2","label":"Mkt2 }
解决方法
区别在于,在第一种情况下,创建的对象继承自field.prototype,然后是Object.prototype(即其内部[[Prototype]]是field.prototype,其内部[[Prototype]]是Object.prototype),其中as在第二种情况下,它仅从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
‘ – >’意思是“继承自”.