var val =(1,2,3)//逗号运算符,取最右边的数//3
delete运算符 : delete obj.x
var obj={x:1}
obj.x;; //1
delete obj.x;
obj.x; //undefined
var obj ={}
Object.defineProperty(obj,'x',{ configurable:false , value:1}) configurable为false是对象的值不可删
delete obj.x;//false
obj.x;//1
in运算符 : window.x =1(定义一个全局变量x) 'x' in window; //true 'x'表示属性
typeof、instanceof、this、new、void运算符
特殊运算符的种类:
1、条件运算符 c?a:b c为true 则取a,否则取b
2、逗号运算符 a,b 例如 var s = (1,2,3),则s依次赋值,最后输出为3
3、delete运算符 delete obj.x 删除对象obj中的x属性 在IE9下,obj中必须configurable:true 才可以删除,否则无效
4、in运算符 判断obj是否有值或window里是否有变量,返回布尔值 例如 attr in json 或 'document' in window
5、instanceof 判断对象类型 {} instanceof Object // true
6、new运算符 创建一个新对象 new obj / new array ...
7、this对象 全局用指向window,函数内指向函数本身,浮动指针
8、typeof 判断对象,返回对象类型 例如 typeof 100 === 'number' // true
9、void 一元的,判断所有值,返回均为undefined
过hasOwnProperty()判断属性到底是 对象上的 还是 对象的原型链上的
//运算符
undefined
//比较少见的有一个,运算符
undefined
var val = (1,2,3)
undefined
5804:1 Unchecked runtime.lastError: The message port closed before a response was received.
val
3
//,其实是每个都会计算,但是只输出最后的一个
undefined
//2另外就是删除这个
undefined
var obj = {x:1};
undefined
obj.x
1
Object.defineProperties(obj,'x'{
})
VM13336:1 Uncaught SyntaxError: missing ) after argument list
Object.defineProperties(obj,'x'{
})
VM13340:1 Uncaught SyntaxError: missing ) after argument list
Object.defineProperties(obj,'x',{configurable
})
VM13393:1 Uncaught ReferenceError: configurable is not defined
at <anonymous>:1:34
(anonymous) @ VM13393:1
Object.defineProperty(obj,'x'{})
VM13539:1 Uncaught SyntaxError: missing ) after argument list
Object.defineProperty(obj,'x',{})
{x: 1}
Object.defineProperty(obj,'x',{
configurable : false,
})
{x: 1}
delete obj.x
false
//这个时候就会发现里面的configurable是true
undefined
//in判断符
undefined
window.x = 1
1
x in window
true
function Foo(){}
undefined
Foo
ƒ Foo(){}
Foo.prototype.x = 1;
1
var obj = new Foo()
undefined
obj.x
1
obj.hasOwnProperty('x');//判断在obj里面是否含有x这个属性,因为x是在obj的prototype里面,所以也不会被检测到
false
obj.__proto__.hasOwnProperty('x')
true
var
运算符类型
Object.defineProperty(obj,'x',{ configurable:false, // configurable 设置obj对象中的属性x是否可以delete value:1 });
运算符优先级
特殊运算符
void 运算符
void 0 //undefined
void(0) //undefined
注意!
obj.__proto__.hasOwnProperty('x'); //true <<=说明 obj.__proto__ === Foo.prototype
instanceof判断类型是基于"原型链"
当delete遇到 configurable
c o n f i g u r a b l e
逗号运算符
运算优先级
特殊运算符
普通运算符
运算符..
c?a:b //c为true返回冒号前的a,否则为b
var val=(1,2,3); //val=3,逗号表达式取最右边的结果
对象原型属性
添加 funcation Foo(){}; foo.prototype.x=1
访问 var obj=new foo();obj.__proto__.hasOwnProperty('x'); //true
访问 对象的属性 obj.hasOwnProperty('x'); //false
对象上的属性
var obj={};
Object.defineProperty(obj,'x',{
configurable:false,
value:1})
delete obj.x; //false configurable:false后,无法用delete删除属性。
obj.x; //1
var obj={x:1};
obj.x; //1
delete obj.x; //删除对象的属性。
obj.x; //undefined
var val=(1,2,3) 逗号运算符,取最右边的。