-
[[global]] ={Math:<...>,String:<...>,isNan:function(){[Native Code]}........} GlobalContextVO (VO===this===global) String(10);//[[global]].String(10); window.a = 10 //[[global]].window.a=10;查看全部
-
由于声明Student.prototype=new Person(),Student.prototype的[proto]标签就指向了Person.prototype,所以,bosn的[proto]的[proto](原型的原型)就是Student.prototype的原型Person.prototype。查看全部
-
JavaScript是弱类型语言,其有五种原始类型,分别是number、string、boolean、null、undefined,和一种对象类型(object),包括我们熟悉的function、array、data等。。。查看全部
-
解释器在解释一个语句时,如果以function开头,就会理解为函数声明,而前面加一个!可以让解释器理解为函数表达式,这样就可以立即调用了。 use strict 可以写在整个函数的的里面,也可以写在整个函数的的最上面,也可以在上面加点东西啥的 1、严格模式,不允许用 with 语句。否则会报syntax error语法错误 2、一般可以隐式创建全局变量,直接进行赋值,但是严格模式会报错。 3 普通模式下:arguments[0..n]为函数fun(a,b,c)的参数的数组表现形式,严格模式下:arguments对象变为参数静态副本,即只能获得实际参数的值不能改变实际参数。ps:若得到的参数为对象,则仍可以借助arguments.x对对象的属性进行修改并产生影响。 4 在严格模式下,delete不可配置属性:Object.defineProperty(obj,'a',{configurable:false}});不能使用,会报错。 5 对象字面量属性名重复中,一般以最后一个属性为准,但在严格模式下会报错 6 严格模式下不能使用八进制字面量。 7 eval,arguments变为关键字,不可作为变量名和函数名。 8 eval独立作用域 9一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象。若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象。 10 试图修改不可泄属性(writable=false),在不可扩展的对象上添加属性时报TyoeError,而不是忽略。 11 arguments.caller , arguments.callee被禁用查看全部
-
val = +val;目的是为val转化成数字 a +=a 则是自身加。查看全部
-
@JavaScript深入浅出——-第1章 数据类型 1-3 隐式转换 ①+和- +:第一种表示字符串连接 第二种表示数字相加 -:只表示数字相减 巧用+/-规则转换类型 num-0 >> 数字 num+" " >> 字符串 ②===严格等于与== a===b 严格等于=== 现比较类型 再比较内容 类型不同,返回false ; 类型相同: null===null undefined===undefined NaN不等于NaN (和任何比较都不等包括本身) new Object()==new Object() [1,2]==[1,2] ==等于 类型不同,上市类型转化和比较 0==false 1==true null==undefined查看全部
-
@JavaScript深入浅出——-第1章 数据类型 1-3 隐式转换 ①+和- +:第一种表示字符串连接 第二种表示数字相加 -:只表示数字相减 巧用+/-规则转换类型 num-0 >> 数字 num+" " >> 字符串 ②===严格等于与== a===b 严格等于=== 现比较类型 再比较内容 类型不同,返回false ; 类型相同: null===null undefined===undefined NaN不等于NaN (和任何比较都不等包括本身) new Object()==new Object() [1,2]==[1,2] ==等于 类型不同,上市类型转化和比较 0==false 1==true null==undefined查看全部
-
在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。这就需要用到instanceof来检测某个对象是不是另一个对象的实例。 另外,更重的一点是 instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型。 例如: function Foo(){} Foo.prototype = new Aoo();//JavaScript 原型继承 var foo = new Foo(); console.log(foo instanceof Foo)//true console.log(foo instanceof Aoo)//true 上面的代码中是判断了一层继承关系中的父类,在多层继承关系中,instanceof 运算符同样适用。查看全部
-
1、属性访问,点操作或者中括号(内部自动转成字符串),建议用点。但是如果是要拼的话用中括号。用for in会把原型链的读出来。 2、访问不存在属性,进行原型链查找,末端找不到,会undefined。 3、写属性,有的话就修改,没的话就新创建并赋值。 4、delete 删除属性,重复删除同一个属性,仍然返回true。所以delete并不代表操作成功或者失败了,而是说还有没有这个属性值。prototype不能被删除。 5、configurable:是否可配置。getOwnPrototypeDescriptor(obj,属性) 6、var 定义的都不可以删除。函数和函数的函数都不可以被delete掉。隐式创建的变量可以删除(不推荐的语法)。 7、in操作符会向原型链向上查找的,hasOwnProperty自己有没有(用在for in判断过滤原型上的属性)。 8、Enumerable:是否可枚举。 9、object.defineProterty创建的对象他对应的属性默认false。而字面量和new和赋值而创建的对象的默认的是true 10、!=undefined。就是不等于null和undefined、查看全部
-
对象构造: 除了本身被赋予的值之外,对象还有几个隐藏标签: proto:对象的对象属性prototype上的赋值,一般是该对象种类的不变属性或方法,例如 new一个猫,猫的颜色和年龄可以作为一般属性,而猫叫,猫吃鱼这种不常变动的属性可以在prototype上赋值,可以节省内存。 class:对象的种类 extensible:是否允许该对象继续增加新的属性 另外对象的值(如 x=1),也有对应的属性或方法,提供一些访问权限的控制 writable:是否可写 enumerable:是否能被删除 configurable:是否能够枚举 value:值 get/set:获取/设置属性查看全部
-
'use strict' 严格模式,声明在文件中或方法中(作用域不同)查看全部
-
var a = b =1 隐士的创建了一个全局变量B查看全部
-
js 没有块级作用域。for(var i=0;i<10;i++){} 在函数外部依然可以得到i且i=10查看全部
-
块语句查看全部
-
js 有全局作用域 和函数作用域(函数的局部变量只有函数内部可以访问) eval作用域 //注意 用 new Function/Function() 访问不到构造器定义域的范围变量查看全部
举报
0/150
提交
取消