標籤:
apply:方法能劫持另外一個對象的方法,繼承另外一個對象的屬性. 接受的參數是一個字串。
call:和apply的意思一樣,只不過是參數列表不一樣. 接收的參數是一個數組。
例如:
<script>window.firstName = "diz"; window.lastName = "song"; var myObject = {firstName: "my", lastName: "Object"}; function HelloName(){ console.log("Hello " + this.firstName + " " + this.lastName, " glad to meet you!"); } HelloName.call(window);HelloName.call(myObject);</script>運行結果為: Hello diz song glad to meet you! Hello my Object glad to meet you!
HelloName方法調用window或myObject中的對象屬性。
<script type="text/javascript"> /*定義一個人類*/ function Person(name,age) { this.name=name; this.age=age; } /*定義一個學生類*/ functionStudent(name,age,grade) { Person.apply(this,arguments); this.grade=grade; } //建立一個學生類 var student=new Student("qian",21,"一年級"); //測試 alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade); //大家可以看到測試結果name:qian age:21 grade:一年級 //學生類裡面我沒有給name和age屬性賦值啊,為什麼又存在這兩個屬性的值呢,這個就是apply的神奇之處.</script>
javacript中apply和call的區別