1。
删除属性 删除
运算符可以删除对象的属性。
复制代码代码如下所示:
删除person.age人不再有年龄 / 财产/
删除的人{年龄} / /左右
删除断开的特性和宿主对象之间只是一个
连接,和b.x仍然是1后在性质上看删除A.P.
var:{:{ 1 };
var;
console.log(a.p.x); / / 1
删除一个P;
console.log(a.p.x); / / TypeError A P是不确定的
console.log(午饭前); / /未定义
console.log(b.x); / / 1
删除只能删除自己的属性,而不删除继承属性。如果要删除继承属性,则必须从定义属性的原型对象中删除继承属性。当然,它将
影响从这个原型继承的所有对象。
函数继承(p){
如果(= NULL){不来自null
把TypeError();
}
如果(对象)
创建,如果直接使用此
方法 返回object.create(P);
}
var t =型P;
如果(t!= =对象| | T!=函数)要继承以满足的对象
类型 把TypeError();
}
函数(f){;定义空构造函数
f.prototype = P; / /继承对象P原型
返回新(f);创建一个f对象,这个对象是从p继承的
}
var obj = { x:1 };
var obj1 =继承(obj);
obj1 y = 2;
console.log(=+obj1。x + y =+ obj1,Y); / / x = 1,y = 2
删除obj1 X;
obj1 Y删除;
console.log(=+obj1。x + y =+ obj1,Y); / / x = 1,y =定义
当然,可
配置属性可用于删除。
如
删除object.prototype; / /不删除配置
变量x=1;
删除此x;不能删除
这个,y=1;
删除y;这可以删除
函数f(){ }
删除此项。不能删除
2。属性提取
在
内部运算符希望它的左
操作数是字符串或者可以
转换成字符串,并且预期它的右操作数是一个对象。
VaR数据= {与};
console.log(0数据); / /下标0
console.log(1数据); / / 1可以转换为1
console.log(4数据); / / 123。
var obj = { x:1 };
console.log(X在obj); / /真的
console.log(Y在obj); / /假
console.log(toString在obj); / /真的继承了这种方法因为obj
使用hasownproperty()或()propertyisenumerable -后者是前者的增强
顾明
var obj = { x:1 };
console.log(obj.hasownproperty(X)); / /真的
console.log(obj.hasownproperty(Y)); / /假
console.log(obj.hasownproperty(规则)); / /虚继承的方法因为没有自己的
目标 后者只返回TRUE当它
检测到作为一个自由的属性和可枚举的属性
var obj = { x:1 };
console.log(obj.propertyisenumerable(X)); / /真的
console.log(obj.propertyisenumerable(Y)); / /假
console.log(obj.propertyisenumerable(规则)); / /虚继承的方法因为没有自己的目标
console.log(object.prototype.propertyisenumerable(规则); / /假)因为原来的toString是不可数。
当然,可以直接用=操作符来判断!
var obj = { x:1 };
console.log(obj X!=未定义的)
console.log(obj。Y!=未定义的)
console.log(obj.tostring!=未定义的)
三.枚举属性
var obj = { x 1,y 2 };
为(P OBJ){
console.log(P); / / X Y
console.log(obj,P); / /未定义未定义
console.log(obj { p }); / / 1 2
}
1分机:
每个对象都有一个原型(原型)、一个类(类)、一个与它相关的可
扩展性(可扩展性)。
检测一个对象是否是另一个对象的原型(或在原型链),该isprototypeof()方法可以用
VaR P = { 1 };x: / / P原型对象继承自object.prototype
var o = object.create(P);从P / / O对象继承
console.log(p.isprototypeof(O)); / /真的
console.log(object.prototype.isprototypeof(O)); / /真的
console.log(Object.prototype.isPrototypeOf(P)); / /真的
当然,这isprototypeof()方法是非常相似的实例操作
这是运营商希望其左操作数是一个对象,和右操作数所标识的对象的类。如果左边的对象是类的实例,该表达式返回true,否则返回false
var = x:1 };
console.log(P实例对象); / /真的
新
日期();
console.log(D是日期); / /真的
console.log(D实例对象); / /真的
console.log(D是数); / /假
2分机:
对象的class属性是表示对象类型信息的字符串。
的toString的总称()方法返回的是对象类的形式} {
如
复制代码代码如下所示:
var obj = { x 1,y 2 };
console.log(obj.tostring()); / / {物}
因此,要获取对象的类,可以通过返回的字符串使用切片(8,- 1)来查找类字段。
如
功能类(obj){ / /找到类名
如果(obj = null){
返回null;
}
如果(obj = undefined){
返回未定义;
}
返回object.prototype.tostring.call(obj)。片(8、1);
}
console.log(类(1) / /数);
/ /注意,实际上是这些类型的变量(称为字符串),而不是通过自己的直接调用
/ / console.log((1。toString)); / /
错误 var a=1;
console.log(编号(1),ToString()); / / 1
console.log(a.tostring()); / / 1
console.log({ 1 } X:ToString()); / / {物}
console.log(类(1) / /数);
console.log(类()); / /串
console.log(类(乙方)); / /串
console.log(类(空)); / /空
console.log(类(假)); / /布尔
console.log(类({ })); / /对象
console.log(类; / /阵列({ }))
console.log(类(新的日期())); / /日期
函数(f){ }
console.log(类(新f())); / /对象