- 在函數中:this 通常是一個隱含的參數。
- 在函數外(頂級作用域中):在瀏覽器中this 指的是全局對象;在Node.js中指的是模塊(module)的導出(exports)。
- 傳遞到eval()中的字符串:如果eval()是被直接調用的,this 指的是當前對象;如果eval()是被間接調用的,this 就是指全局對象。
- 介紹一下 JavaScript 原型,原型鏈,它們有何特點?
- 每個對象都會在其內部初始化一個屬性,就是prototype(原型),當我們訪問一個對象的屬性時,如果這個對象內部不存在這個屬性,那麼他就會去prototype裡找這個屬性,這個prototype又會有自己的prototype,於是就這樣一直找下去,也就是我們平時所說的原型鏈的概念。
- 關係:instance.constructor.prototype = instance.__proto__
- 特點:JavaScript對象是通過引用來傳遞的,我們創建的每個新對象實體中並沒有一份屬於自己的原型副本,當我們修改原型時,與之相關的對象也會繼承這一改變。
- 當我們需要一個屬性時,JavaScript引擎會先看當前對象中是否有這個屬性,如果沒有的話,就會查找它的prototype對象是否有這個屬性,如此遞推下去,一致檢索到Object內建對象。
- function Func(){}
- Func.prototype.name = "Xiaosong";
- Func.prototype.getInfo = function() {
- return this.name;
- }
- var person = new Func();
- console.log(person.getInfo());//"Xiaosong"
- console.log(Func.prototype);//Func { name = "Xiaosong", getInfo = function() }
![2018年出現頻率較高的前端面試題及答案——js篇,有備無患哦](http://p2.ttnews.xyz/loading.gif)
(未完待續)
閱讀更多 普託邦大博士 的文章
關鍵字: 作用域 JavaScript 面試題