javascript之原型。

原型:

我们先解释一下原型:

每一个javascript对象(null外)都和另一个对象相关联,所谓的另一个就是我们熟知的原型,每一个对象都从原型继承属性。
比如:
new Date(); // new创建对象的原型就是Date.prototype。
new RegExp(); // 它的原型就是RegExp就是RegExp.prototype。

Object.create(); // 是一个静态函数,不提供给某个对象调用的方法,使用只需传入所需的原型对象。

使用:
var o = Object.create({x:2,y:1}); // o继承了两个属性 x y
var o1 = Object.create(null); //不继承任何东西
var o2 = Object.create(RegExp.prototype); // new RegExp()相同

检测属性:

in 运算符
hasOwnProperty(); // 检测给定的名字是否是对象的自有属性

使用:
var o = {x:12};
o.hasOwnProperty(‘x’); // true o有一个自有属性x

propertyIsEnumerable(); // 只有检测到是自有属性且这个属性的可枚举性,有些内置属性是不可枚举的,一般代码创建的属性都可以枚举。

使用:

var o = inherit({y:2}); // 通过inherit继承属性y
o.x = 1; // 自有属性x
o.propertyIsEnumerable(‘x’); // true 自有属性且可枚举
o.propertyIsEnumerable(‘y’); // false 虽然有y属性在内 但是继承属性不可枚举

对象的三个属性:

原型属性:
用来继承属性的,原型属性是在实例对象创建之初就设置好的。

类:
对象的类属性,是一个字符串,表示对象的类型信息。

可扩展性:
表示是否可以给对象添加新属性。所有内置对象与自定义对象都是显示可扩展的。
Object.esExtensible(); // 判断该对象是否可扩展。
Object.preventExtensions(); // 转为不可扩展,把要转的对象作为参数传进去,一旦转为不可扩展,就无法转为可扩展。

序列化对象:
对象序列化是指对象的状态转为字符串。也可将字符串还原为对象。
JSON.stringify(); // 序列化 只能序列化可枚举的自有属性
JSON.parse(); // 还原javascript对象。

使用:
var o = {x:1,y:2};
JSON.stringify(o); // ‘{“x”:1,“y”:2}’ 序列化
JSON.parse(o); // 还原

函数、正则、error对象和undefined不能序列化与还原

猜你喜欢

转载自blog.csdn.net/weixin_44164824/article/details/89006071