摘要:即構(gòu)造器的原型對象即構(gòu)造器的原型對象和的關(guān)系是每個對象都有的一個屬性,而是函數(shù)才會有的屬性。不可以使用對象,不存在,可以使用代替。在開發(fā)過程中,需要保證某個元素的在其同級元素中具有唯一性。
1.理解原型、原型鏈?
每創(chuàng)建一個函數(shù),函數(shù)上都有一個prototype的屬性,他是一個對象。這個對象的作用就是當(dāng)使用它創(chuàng)建實例的時候,這些實例都會共享原型上的屬性和方法。
當(dāng)我們訪問對象中的某個屬性時,如果這個對象內(nèi)部不存在這個屬性,那么他就會去__proto__里面去找這個屬性,這個__proto__又會有自己的__proto__,
就這么一直找下去直到最后一個__proto__值為null。
var A = function(){}; var a = new A(); console.log(a.__proto__); //A {}(即構(gòu)造器function A 的原型對象) console.log(a.__proto__.__proto__); //Object {}(即構(gòu)造器function Object 的原型對象) console.log(a.__proto__.__proto__.__proto__); //null
2. __proto__和prototype的關(guān)系?
__proto__是每個對象都有的一個屬性,而prototype是函數(shù)才會有的屬性。
舉例:var p = new Person(); 其中p.__proto__ == Person.prototype。
3. 如何鑒別屬性是自有屬性還是原型屬性?
hasOwnProperty()方法返回true即為自有屬性,返回false有兩種可能
1.為原型屬性;
2.跟本不存在該屬性
所以判斷是否是原型屬性,要先用in判斷該對象中是否存在此屬性:
function hasPrototypeProperty(obj, name){ return name in obj && !obj.hasOwnProperty(name); }
4.如何判斷某個對象是否是另一個對象的原型對象?
isPrototypeOf(); 例:function Cat(name,color){} var cat1 = new Cat(); alert(Cat.prototype.isPrototypeOf(cat1)); //true
5. ES6箭頭函數(shù)注意點 ?
1.函數(shù)體內(nèi)的this,是定義時所在的對象,而不是使用時所在的對象,始終指向自身外的第一個this。
2.不可以做構(gòu)造函數(shù),也就是說不可以使用 new 命令,否則會拋錯。
3.不可以使用arguments對象,不存在,可以使用Rest代替。
使用Rest: var foo=(...arguments)=> {console.log(arguments); }
6. 讓你開始一個項目,你會選擇用 vue 還是 React?
1如果你喜歡用模板搭建應(yīng)用,請使用 vue。
2如果你的應(yīng)用需要盡可能小和快,請使用 vue。
3如果你計劃構(gòu)建一個大學(xué)型應(yīng)用,請使用 React。
4如果你想要同時適用于Web端和原生App的框架,請使用 React。
5如果你想要更大的生態(tài)圈(論壇等),請使用 React。
7. React創(chuàng)建組件的三種方式及其區(qū)別 ?
1.函數(shù)式定義(無狀態(tài)組件):function 組件名(props,/context/){}
2.ES5之var 組件名= React.creatClass({})
3.ES6之class 組件名 extends React.Components{}
8. React 中 keys 的作用是什么 ?
keys 是用于追蹤哪些元素被修改、被添加、被刪除的輔助標(biāo)識。在開發(fā)過程中,需要保證某個元素的 key 在其同級元素中具有唯一性。
9. 為什么接下來這段代碼不是 IIFE(立即調(diào)用的函數(shù)表達式)?
function foo(){ }();
以function關(guān)鍵字開頭的語句會被解析為函數(shù)聲明,而函數(shù)聲明是不允許直接運行的。
只有當(dāng)解析器把這句話解析為函數(shù)表達式,才能夠直接運行,
解決1. (function foo(){ // code.. })() 解決2. var foo = function(){}; foo();
10. js中如何判斷null和undefined ?
if(typeof(a)=="undefined"){ console.log("undefined") } if(typeof(a)!="undefined"&&a!=0&&!a){ console.log("null") }
11. 實現(xiàn)一個數(shù)組亂序排列 ?
var a = [1, 2, 3, 5, 4]; function fn(a, b) { return Math.Random() - 0.5 } a.sort(fn);//[5,1,2,4,3] var a = [1, 2, 3, 5, 4]; function fn(a, b) { return a - b } a.sort(fn);//[1, 2, 3, 4, 5] var a = [1, 2, 3, 5, 4]; function fn(a, b) { return b - a } a.sort(fn);//[5, 4, 3, 2, 1]
js如何區(qū)分?jǐn)?shù)組還是對象 ? (代表:實現(xiàn)深拷貝函數(shù))
第一種:Object.prototype.toString.call(a).slice(8,-1) == "Array" ? [] : {}
var a = {}; Object.prototype.toString.call(a);//"[object Object]" var a = []; Object.prototype.toString.call(a);//"[object Array]"
第二種:
var a=[]; var b={}; typeof a === "object" && !isNaN(a.length)//true typeof b === "object" && !isNaN(b.length)//false
第三種:
var a=[]; var b={}; Array.isArray(a);//true Array.isArray(b)//false
實現(xiàn)一個深拷貝函數(shù):
function clone(obj) { if(typeof(obj)=="object"&&obj){//&&obj是排除obj=null //區(qū)分是數(shù)組還是對象,建立空數(shù)組或空對象 var o = Array.isArray(obj) ? [] : {}; for(var k in obj) { if(typeof(obj[k])=="object"){ o[k] = clone(obj[k]); }else{ o[k] = obj[k]; } } }else{ return obj; } return o; }
...
微信公眾號:前端實習(xí)日記
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/94675.html
摘要:好不容易在月號這天中午點左右接到了來自阿里的面試電話。這里會不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點的和的打包過程多線程機制機制系統(tǒng)啟動過程,啟動過程等等掃清面試障礙最新面試經(jīng)驗分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發(fā)面試題總結(jié) 各大公司 Jav...
閱讀 2969·2021-11-25 09:43
閱讀 3586·2021-11-24 11:13
閱讀 3354·2021-10-14 09:42
閱讀 2556·2021-09-23 11:53
閱讀 3605·2021-09-22 15:57
閱讀 3221·2021-09-02 09:54
閱讀 3499·2019-08-30 13:47
閱讀 1638·2019-08-29 16:55