标签:
delete、in、typeof、instanceof、void详解
本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript)
delete 运算符用来删除对象的自有属性.
语法:delete expression
可以使用 delete 操作符来删除一个隐式声明的全局变量,也就是没有使用 var 定义的全局变量
如果 delete 操作符删除成功,则被删除的属性将从所属的对象上彻底消失。然后,如果该对象的原型链上有一个同名属性,则该对象会从原型链上继承该同名属性
删除属性后,属性将从所属的对象上彻底消失,而删除数组元素后,会在数组内留下一个空洞,读取它的值将为undefined,数组长度不变;
delete无法删除:尝试删除无法删除的属性返回false,若删除成功或删除操作不起作用时均返回true
1、内置核心、客户端属性不能删除;
2、用户通过var语句声明的变量不能删除;
3、通过function语句定义的函数和函数参数也不能删除
4、不可配置的属性无法删除
5、不能删除继承来属性,不过可以从原型上直接删掉它
6、有一个例外:eval内的显示声明的属性可以被删除!eval(‘var a = 1‘)
function foo(){
delete x;
let x;
}
in:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/in
语法:prop in objectName
typeof 运算符用来判断给定对象的类型.
语法:typeof operand
typeof /s/ === ‘function‘; // Chrome 1-12 , 不符合 ECMAScript 5.1
typeof /s/ === ‘object‘; // Firefox 5+ , 符合 ECMAScript 5.1
typeof 可能的返回值:
类型 |
结果 |
Undefined |
"undefined" |
Null (引用了空指针) |
"object" (见下方) |
Boolean字面量 |
"boolean" |
Number字面量 |
"number" |
String字面量 |
"string" |
Symbol (ECMAScript 6 新增) |
"symbol" |
宿主对象(由JS环境提供) |
Implementation-dependent |
函数对象 ( [[Call]] 在ECMA-262条款中实现了) |
"function" |
任何其他对象(带引用) |
"object" |
语法:obj instanceof constructor
// 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例
function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型继承
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
它会对给定的表达式进行求值,然后直接返回 undefined。
语法:void expression
void function foo() {
var a =1;
var biz = function () {return a;};
biz();
}();
<a href="javascript:void(0);">
这个链接点击之后不会做任何事情,如果去掉 void(),
点击之后整个页面会被替换成一个字符 0。
</a>
<a href="javascript:void(document.body.style.backgroundColor=‘green‘);">
点击这个链接会让页面背景变成绿色。
</a>
原生JS:delete、in、typeof、instanceof、void详解
标签:
原文地址:http://www.cnblogs.com/susufufu/p/5859632.html