解析与创建的Javascript对象

前端之家收集整理的这篇文章主要介绍了解析与创建的Javascript对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
p和p2对象之间的实际区别是什么:
var Person = function(name) { this.Name=name; }
var p = new Person("John");

var p2 = JSON.parse('{"Name":"John"}');

当我更好地创建新的Person()并从解析的JSON复制值,而不是使用解析的JSON对象,因为我会使用Person的实例时,会出现什么情况?

PS.假设我从WebSocket获取了JSON字符串,无论如何我将不得不解析它.

解决方法

主要区别在于p是一个对象,它是Person的一个实例,而p2是一个“普通”对象,它只是Object的一个实例.

这种差异何时重要?

1)访问原型属性

var Person = function(name) { this.Name=name; }
Person.prototype.getName = function () {
    return this.Name;
};

p.getName() //works fine
p2.getName() //Error since getName is not defined

要么:

console.log(p.constructor) //Person
console.log(p2.constructor) //Object

2)使用instanceof运算符:

p instanceof Person //true
p2 instanceof Person //false

3)与继承有关的一切

所有这三点基本上都可以追溯到原型链,这两种方式都是这样的:

p --> Person --> Object

p2 --> Object

现在,由于你有这个构造函数,我建议你总是使用它,因为如果你将Person对象与普通对象混合,它会变得非常混乱.如果你真的只想要一个具有Name属性的对象,那么两种方式都可以,但是一旦它变得更复杂,你就会遇到严重的问题.

猜你在找的JavaScript相关文章