标签:
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.1typeof /s/ === ‘object‘; // Firefox 5+ , 符合 ECMAScript 5.1typeof 可能的返回值:
|
类型 |
结果 |
|
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