您的位置:首页 > 职场人生

前端面试总结

2017-03-25 00:00 246 查看

1.js中this是如何工作的?

函数中的this的值取决于函数调用的模式:

方法调用模式

当函数被保存为对象的一个属性时,该函数为该对象的方法。函数中this的值为该对象。

var foo = {
name: 'fooname',
getName: function (){
return this.name
}
}
foo.getName();  // this => foo

函数调用模式

当函数并不是对象的属性。函数中this的值为全局对象
note:某个方法中的内部函数中的this的值也是全局对象,而非外部函数的this

function foo(){
this.name = 'fooname';
}
foo();  // this => window

构造器调用模式
即使用new调用的函数,则其中this将会被绑定到那个新构造的对象。

function Foo(){
this.name = 'fooname';
}
var foo = new Foo();  // this => foo

使用apply或call调用模式
该模式调用时,函数中this被绑定到apply或call方法调用时接受的第一个参数。

function getName(name){
this.name = name;
}
var foo = {};
getName.call(foo, name);  // this =>foo

改变this值的方法主要有三个:

call、apply、bind

区别在于call和apply都是直接调用,而bind确实生成了一个改变了this指针的新函数,需要再次调用,call和bind的第二个参数都是一个任意值,而apply的必须是一个数组

2.new操作符具体干了什么?

创建了一个空对象,并且this变量引用该对象,并且继承了该函数的原型

属性和方法被加入到this引用的对象中

新创建的对象被this所引用,并且最后隐式返回this
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  前端 面试 技巧