歡迎來到我的知識樂園,希望這些題對大家有幫助,
1.創建物件的方式?
1)直接給物件系結屬性和方法
2)通過字面量創建物件
3)工廠模式
4)建構式
5)原型物件
6)混合模式(建構式+原型物件)
2.如何創建一個物件, 實作 屬性私有方法共享?
function Obj(name,age){
this.name=name;
this.age=age;
this.fn()
}
Obj.prototype.fn=function(){
console.log(this.name);
}
var o=new Obj('張三',50)
3.new 運算子 做了什么作業?
1) 實體的時候會創建一個空的新物件
2) 將 this指向為新建的空物件
3) 將系結到this上的屬性和方法,指向空物件
4) 最后將新建的物件返出
4.prototype和_ _proto_ _關系?
原型物件 prototype:每一個函式都有一個原型物件,系結到原型物件上的屬性和方法是公共的
每一個物件上都有一個__proto__物件,只有函式物件才有prototype
__proto__是一個指標,它指的是構造它的物件的prototype
(實體化物件的__proto__ 指向建構式的原型物件)
5.原型鏈是什么?
1)由于__proto__是任何物件的都有的屬性,是一個指標,指的是建構式的prototype原型物件,而該建構式的原型物件也有__proto__,指向該建構式所繼承物件的原型物件,以此類推,會形成一條由__proto__組成的鏈條,該鏈條就是原型鏈,遞回訪問__proto__到終點,值為null物件,
2)查找屬性(方法),如果本身沒有,則會去__proto__中查找,(也就是去建構式的原型物件中查找),如果建構式中的原型物件上也沒有該屬性,因為建構式也是物件,也有__proto__,那么會去它的顯式原型中查找,一直到null,如果沒有則回傳undefined
6.對this的理解以及this指向?
this 指向函式運行時所屬的物件
this 不指函式本身,也不指函式所對的作用域,指向呼叫此函式的物件
this 指向分為六種情況:
1) 全域函式中的this,在全域環境下呼叫的時候指向window
注意:如果全域函式內部是嚴格模式,則在全域環境下不指向window 指undefined
2) 函式被賦值給某個事件時,指向系結事件的物件
3) this在物件的方法中使用時,指向的是 方法所屬的物件
4)在閉包中 this 指向window
5) 在建構式中以及建構式的原型物件中的this,都指向建構式的實體物件
6)箭頭函式中的this 指向 箭頭函式被定義的執行環境
7.通過遞回方式實作深拷貝?
function deepCopy(obj){
var obj2=Array.isArray(obj)?[]:{};
for(var i in obj){ // 回圈物件 obj
if(typeof obj[i]==='object'){ //判斷取出的每一項是否是物件
// 如果是物件, 則需要 再新建物件 然后再進行回圈賦值
obj2[i]={};
for(var k in obj[i]){
obj2[i][k] = obj[i][k];
}
obj2[i]=deepCopy(obj[i]);
}else{
// 如果不是物件, 則 直接賦值
obj2[i]=obj[i];
}
}
return obj2;
}
8.獲取當前元素到body的距離?
function getTL(obj){
var oT=obj.offsetTop; // 獲取當前元素到定位父級的上側距離
var oL=obj.offsetLeft;// 獲取當前元素到定位父級的左側距離
var p=obj.offsetParent; // 獲取當前元素的定位父級
while(p){ // 判斷定位父級是否為空
oT=oT+p.offsetTop+p.clientTop;
oL=oL+p.offsetLeft+p.clientLeft;
p=p.offsetParent;
};
return {left:oL,top:oT};
}
9.面向物件編程和面向程序編程?
面向物件編程: 1) 用抽象的方式創建基于現實世界模型的一種編程方式
2) 將需求抽象為一個物件,在這個物件上分析它的屬性和方法
3) 將對函式的封裝轉為對物件的封裝
面向程序編程 : 分析問題所需要的步驟,用函式將這些步驟一步一步實作的編程方式
10.說說你對閉包函式的理解?
閉包就是能夠讀取其他函式內部變數的函式,也可以把閉包簡單理解成“定義在一個函式內部的函式”,它的最大用處有兩個,一個是可以讀取函式內部的變數,另一個是讓這些變數的值始終保持在記憶體中,
閉包又有什么壞處?
1)增加了記憶體的消耗,
2) 某些瀏覽器上因為回識訓制的問題,有記憶體泄漏,記憶體溢位風險,
3)增加了代碼的復雜度,維護和除錯不便
11.導航聯動封裝
function getTL(obj) {
var oT = obj.offsetTop; // 獲取當前元素到定位父級的上側距離
var oL = obj.offsetLeft;// 獲取當前元素到定位父級的左側距離
var p = obj.offsetParent; // 獲取當前元素的定位父級
while (p) { // 判斷定位父級是否為空
oT = oT + p.offsetTop + p.clientTop;
oL = oL + p.offsetLeft + p.clientLeft;
p = p.offsetParent;
};
return { left: oL, top: oT };
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/302809.html
標籤:其他
上一篇:Vue初始化 axios 攔截器 proxy 跨域代理
下一篇:JSON與AJAX初識
