[JavaScript基礎] 原型,原型鏈,call/apply

原型 prototype

  1. 定義:原型是function對象的是一個屬性,它定義了構造函數(shù)制造出的對象的公共祖先。通過該構造函數(shù)產(chǎn)生的對象,可以繼承該原型的屬性和方法。原型也是對象。

構造函數(shù)的區(qū)別:命名大駝峰式

function Person() {
  //代碼
}
var person = new Person(); //構造函數(shù)產(chǎn)生一個對象
//構造函數(shù)多次調(diào)用,可產(chǎn)生多個相似且獨立的對象。
var person1 = new Person();
···
  1. 利用原型的特點和概念,可以提取共有屬性。
//構造函數(shù)
function Person(name, age) {
    this.name = name;
    this.age = age;
}
// 提取原型中相同的屬性和方法。
Person.prototype = {
    height : 180,
    weight : 200,
    say : function() {
        console.log("abcd")
    }
}
// 調(diào)用構造函數(shù)
var person1 = new Person("abc", 18);
var person2 = new Person("cba", 28);
  1. 對象如何查看原型
    隱式屬性__proto__
    每一個對象都有一個隱式的屬性,__proto__,且__proto__都指向?qū)ο蟮脑?code>prototype
Chrome控制臺

__proto__是可修改的,可修改對象指向的原型

function Person() {
 
}
var obj = {
  name: "abc"
}
var person = new Person(); //
person.__proto__ = obj;  //修改person方法原型指向
console.log(person.name)  //abc
  1. 對象如何查看對象的構造函數(shù) constructor
function Person() {
  
}
function Car() {

}
var car = new Car();
car.constructor = Person()

原型鏈

增、刪、改、查

子孫無法修改父級原型的屬性

Grandpa.prototype.lastName = "Tim";
function Grandpa() {

}
var grandpa = new Grandpa();

Father.prototype = grandpa;
function Father() {

}
var father = new Father();

Son.prototype = father;
function Son() {

}
var son = new Son();

原型鏈的最頂端指向Object.prototype


call/apply

改變this指向

相同點:

call(),apply()的第一個參數(shù)都是改變this指向。

不同點:

call() 需要把實參按照形參的個數(shù)傳進去。

function Person(name, age) {
  this.name = name;
  this.age = age;
}

var person = new Person("Tim",20);

function Student() {
  Person.call(this, "Tom",10)
}

var student = new Student()

apply() 需要傳一個arguments數(shù)組

function Person(name, age) {
  this.name = name;
  this.age = age;
}

var person = new Person("Tim",20);

function Student() {
  Person.apply(this, ["Tom",10])
}

var student = new Student()

JavaScript可正常計算范圍,小數(shù)點前16位,后16位。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容