New操做內部步驟、call/apply/bind區別、alert種類、逗號語句

1、new操做符具體幹了什麼?

var Person = Function(name){
  this.name = name
}

var p = new Person;

// new操做符作了如下三件事
var p = {}; // 建立了一個空對象
p.__proto__ = Person.prototype; // 將這個對象的 __proto__成員指向了Person.prototype
Person.call(p); // 將Person函數的this指針指向換成p,而後在調用Person函數

2、call 、apply和bind的區別

(一)、類似之處:

一、都是用來改變函數的this對象的指向的。
二、第一個參數都是this要指向的對象。
三、均可以利用後續參數傳參。javascript

(二)、區別:

片斷一

var xw = {
 name:'小王',
 gender:'男',
 aage:24,
 say: function(){
   alert(this.name + " , " + this.gender + " ,今年" + this.age)
 }
}

var xz = {
 name:'小張',
 gender: '男',
 age:25
}

xw.say()

片斷一,顯示爲:小王,男,今年24歲。java

那麼如何用wx的say方法來顯示xz的數據呢?數組

一、call的用法:xw.say.call(xh)app

二、apply的用法:xw.say.apply(xh)函數

三、bind的用法:xw.say.bind(xh)();this

看到區別了嗎?call和apply都是對函數的直接調用,而bind方法返回的仍然是一個函數,所以後面還須要()來進行調用才能夠。spa

(三)、call和apply的區別

將例子稍加改造prototype

片斷二

var xw = {
 name : "小王",
 gender : "男",
 age : 24,
 say : function(school,grade) {
    alert(
      this.name + " , " + 
      this.gender + 
      " ,今年" + 
      this.age + 
      " ,在" + 
      school + 
      "上" + 
      grade);                                
  }
}
var xz = {
 name : "小張",
 gender : "女",
 age : 25
}

一、call的用法:xw.say.call(xz,''實驗小學','六年級')    // 小張,女,今年25,在實驗小學上六年級。指針

二、apply的用法:xw.say.apply(xz,['實驗小學','六年級']) // 小張,女,今年25,在實驗小學上六年級。code

三、bind的用法:

  1. xw.say.bind(xz,"實驗小學","六年級")();
  2. xw.say.bind(xz)("實驗小學","六年級");

 

總結:

至於對於何時用什麼方法,其實不用糾結。若是你的參數原本就是存在於一個數組中,那天然用apply,若是參數之間沒有什麼關聯,就用call。

3、逗號語句,當有多個條件,之間用逗號隔開的時候,會到最右側的條件結束。

for(i=0, j=0; i<10, j<6; i++, j++){
    k = i + j;
}
//5+5,返回10
for(i=0, j=0; i<2, j<8; i++, j++){
    k = i + j;
}
//7+7,返回14

4、js中3中彈窗的消息提醒(警告窗口、確認窗口、信息輸入窗口)

alert("警告"); // 顯示「肯定」,返回undefined
confirm("肯定要清空數據嗎?"); //顯示「取消」和「肯定」,返回false或者true
prompt('請輸入數字',''); //顯示輸入框和空白輸如框,有「取消」和「肯定」按鈕,返回null或者輸入的內容

5、javascript的3種主要類型、2種複合類型、3種特殊類型

主要類型:string、number、boolean

複合類型:function、object

特殊類型:null、undefind

相關文章
相關標籤/搜索