-
Person函数直接调用的话,this会指向全局对象,就是window,用new来调用,this会指向原型为Person.prototype的空对象,用this.name来对空对象赋值,this会作为return值.查看全部
-
Foo.prototype默认有constructor和_proto_属性(不是标准属性,Object.prototype对象上的方法才会被每一个一般的对象所使用),x:1是通过赋值语句增加的,Foo函数有个prototype对象属性,作用是当使用new Foo()来构造Foo()的实例的时候,那么这个prototype会用作new出来的对象原型,也就是_proto_,prototype和原型是两回事,prototype是函数对象上预设的对象属性,而原型通常是obj3对象上的原型,是构造器的prototype属性.查看全部
-
用new来调用Foo()时候,function Foo(){this.y=2;}作为一个构造器使用,this指向一个对象,这个对象的原型会指向构造器的prototype属性,this指向obj3,this.y=2会作为返回值,并在构造器里面调用的时候,会把y赋值为2,obj3的原型(proto)会指向Foo.prototype,y是obj3这个对象上的,x是这个原型链上的原型,也就是Foo.prototype.Foo.prototype也是对象,也有属性.查看全部
-
类型检测小结查看全部
-
类型检测查看全部
-
JS6种数据类型查看全部
-
特殊运算符的种类: 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 一般delete 运算符可以删除对象的属性,而如果使用方法Object.defineProperty(对象,'属性',{configurable:false})处理了对象,该属性就不会被删除,反之ture就是可以被删除。查看全部
-
bind方法(es5 ,ie9+)与this 这对需要绑定一次然后重复调用,但仍然实现这种绑定的会比apply跟call更高效 ; 如上例,g还是按绑定的数值来,为test,而不是为37查看全部
-
bind方法(es5 ,ie9+)与this 这对需要绑定一次然后重复调用,但仍然实现这种绑定的会比apply跟call更高效 ; 如上例,g还是按绑定的数值来,为test,而不是为37查看全部
-
call/apply 方法与this; call和apply中的参数传入一个对象,使用call和apply的方法的this指向这个对象。 call跟apply的差别在于call的附加参数是非数组,apply的附加参数是数组查看全部
-
严格模式:‘user strict’让代码在严格模式下执行 与普通模式的区别: 1、不允许使用with(如果使用会报SyntaxError); 2、不允许未声明的变量赋值(如果没有声明就赋值会报ReferenceError); 3、arguments变为参数的静态副本; 4、delete参数、函数名会报错SyntaxError; 5、delete不可配置的属性报错TypeError; 6、对象字面量重复属性名报错SyntaxError; 7、禁止八进制字面量报错SyntaxError; 8、eval,arguments变为关键字,不能作为变量、函数名,报错SyntaxError; 9、eval独立作用域;查看全部
-
with可以修改当前的作用域, with(document.forms[0]){ console.log(name.value); //实际上是调用document.forms[0].value } 但实际上with的使用让js引擎优化更难,可读性差,可被变量定义代替,严格模式下被禁用查看全部
-
嵌套1:如果内层没有相对应的catch只有finally,那么先执行内层的finally再执行外层的catch; 嵌套2:如果内层有相对应的catch还有finally,那么先执行内层的catch-内层的finally,因为内层的catch已经抓住了这个异常,所以不会再抛出到外层; 嵌套3:如果内层有相对应的catch还有finally并且内层的catch又抛出了一个异常,那么先执行内层的catch-内层的finally-外层的catch;查看全部
-
第二个是Object.prototype.toString查看全部
-
function foo(){ var a=b=1;//此时的b是全局变量 var a=1,b=1;//此时的a,b是局部变量 } foo(); console.log(typeof a);//'undefined' concole.log(typeof b);//'number'查看全部
举报
0/150
提交
取消