亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

原型和原型鏈 prototype和proto的區(qū)別詳情

 更新時間:2021年10月29日 11:02:53   作者:丞丞同學  
原型是function對象下的屬性,它定義了構造函數的共同祖先,也就是一個父子級的關系,子對象會繼承父對象的方法和屬性,每個實例對象下都有__proto__屬性,通過屬性__proto__指向構造函數的原型對象,當到達末端時,返回null,這樣一層一層向頂端查找,就形成了原型鏈

1、原型

原型是function對象下的屬性,它定義了構造函數的共同祖先,也就是一個父子級的關系,子對象會繼承父對象的方法和屬性

  • prototype是函數下的屬性,對象想要查看原型使用隱式屬性__Proto__
  • constructor指向構造函數
  • 自己身上有屬性,原型上也有屬性,取近的,用自己的

通過給原型添加屬性,可以讓所有的實例化對象共享屬性和方法

Car.prototype = {
 height : 1400,
 lang : 4900,
 carName : 'BMW'
}
function Car() {
}
var car = new Car();

2、原型鏈

每個實例對象下都有__proto__屬性,通過屬性__proto__指向構造函數的原型對象,當到達末端時,返回null,這樣一層一層向頂端查找,就形成了原型鏈

prototype是函數特有的, __proto__是對象有的,js中萬物皆對象

prototype——proto——區(qū)別與作用

  • prototype把共有屬性預先定義好,給之后對象使用
  • prototype的存在實現了繼承,節(jié)省內存空間
  • __proto__是對象的,prototype是函數的,因為函數也是對象,所以函數也有__proto__ ;
  • __proto__的作用是就是當訪問一個對象的屬性時,如果該對象內部不存在這個屬性,那么就會沿著它的**__proto__**屬性所指向的那個對象(父對象)里找,也就是原型鏈
  • prototype的作用是就是讓該函數所實例化的對象們都可以找到公用的屬性和方法

__proto__對象原型的意義就在于為對象的查找機制提供一個方向,或者說一條路線,但是它是一個非標準屬性,因此實際開發(fā)中,不可以使用這個屬性,它只是內部指向原型對象 prototype

2.1 constructor構造函數

constructor屬性存在于__proto__prototype,它指向構造函數本身

一般情況下,對象的方法都在構造函數的原型對象中設置。如果有多個對象的方法,我們可以給原型對象采取對象形式賦值,但是這樣就會覆蓋構造函數原型對象原來的內容,這樣修改后的原型對象 constructor 就不再指向當前構造函數了。此時,我們可以在修改后的原型對象中,添加一個 constructor 指向原來的構造函數。

問題 :修改了函數的原型對象,constructor的指向是誰

 function Star(uname, age) {
     this.uname = uname;
     this.age = age;
 }
 // 很多情況下,我們需要手動的利用constructor 這個屬性指回 原來的構造函數
 Star.prototype = {
 // 如果我們修改了原來的原型對象,給原型對象賦值的是一個對象,則必須手動的利用constructor指回原來的構造函數
   constructor: Star, // 手動設置指回原來的構造函數
   sing: function() {
     console.log('我會唱歌');
   },
   movie: function() {
     console.log('我會演電影');
   }
}
var zxy = new Star('張學友', 19);
console.log(zxy)

在修改函數原型時,因為Star.prototype就是一個對象,所以constructor指向構造這個對象的原型,也就是object

2.2 call/apply

通過call``apply可以改變this的指向,借用別人的函數完成自己的功能

區(qū)別:call傳多個參數 apply傳一個參數數組

function Person(name,age,sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}
function Student(name,age,sex,tel,grade) {
    //var this = {name: "lin", age: "19", sex: "male", tel: 123, grade: 78}
    Person.call(this,name,age,sex);//通過call改變this的指向這個函數
    //Person.apply(this,[name,age,sex])
    this.tel = tel;
    this.grade = grade;
}
var student = new Student('lin','19','male',123,78);

2.3 new()

  • 創(chuàng)建一個空對象
  • 構造函數的this,繼承函數原型
  • this指向構造函數的對象實例,執(zhí)行構造函數內容為新對象添加屬性和方法
  • 返回this
var obj = {}//創(chuàng)建空對象
obj.__proto__ = Person.prototype;//繼承作用域
Person.call(obj,)//改變this指向
//這三步是隱式的
var person = new Person();//new操作

到此這篇關于原型和原型鏈 prototype和proto的區(qū)別詳情的文章就介紹到這了,更多相關原型和原型鏈 prototype和proto的區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 微信小程序實現拖拽 image 觸摸事件監(jiān)聽的實例

    微信小程序實現拖拽 image 觸摸事件監(jiān)聽的實例

    這篇文章主要介紹了微信小程序實現拖拽 image 觸摸事件監(jiān)聽的實例的相關資料,這里提供image觸摸并監(jiān)聽的簡單實例,需要的朋友可以參考下
    2017-08-08
  • 直觀詳細的typescript隱式類型轉換圖文詳解

    直觀詳細的typescript隱式類型轉換圖文詳解

    這篇文章主要為大家介紹了直觀詳細的typescript隱式類型轉換圖文詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 可視化埋點元素圈選器實現源碼

    可視化埋點元素圈選器實現源碼

    這篇文章主要為大家介紹了可視化埋點元素圈選器實現源碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Canvas如何判斷點在形狀內及內置API性能詳解

    Canvas如何判斷點在形狀內及內置API性能詳解

    這篇文章主要為大家介紹了Canvas如何判斷點在形狀內及內置API性能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • JavaScript 反射學習技巧

    JavaScript 反射學習技巧

    這篇文章主要給大家分享的是JavaScript 的反射學習技巧,主要是區(qū)別在于所有的函數對象屬性過于復雜,而且額外增加可能會導致程序行為不合理,所以擴展 Reflect 函數來專門對函數對象處理調用方法,構造對象,獲取或者設置屬性等相關操作。下面一起進入文章內容吧
    2021-10-10
  • 微信小程序 獲取當前地理位置和經緯度實例代碼

    微信小程序 獲取當前地理位置和經緯度實例代碼

    這篇文章主要介紹了微信小程序 獲取當前地理位置和經緯度實例代碼的相關資料,這里附有實例代碼,及實現效果圖,需要的朋友可以參考下
    2016-12-12
  • JS中輕松遍歷對象屬性的幾種方式

    JS中輕松遍歷對象屬性的幾種方式

    這篇文章主要給大家介紹的是JS中輕松遍歷對象屬性的幾種方式,文章從自身可枚舉屬性、Object.values() 返回屬性值、Object.entries()來展開介紹,感興趣的小伙伴可以參考一下
    2021-09-09
  • Skypack布局前端基建實現過程詳解

    Skypack布局前端基建實現過程詳解

    這篇文章主要為大家介紹了Skypack布局前端基建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • PHP:微信小程序 微信支付服務端集成實例詳解及源碼下載

    PHP:微信小程序 微信支付服務端集成實例詳解及源碼下載

    這篇文章主要介紹了微信小程序 微信支付服務端集成實例詳解及源碼下載的相關資料,需要的朋友可以參考下
    2017-01-01
  • 微信小程序中頂部導航欄的實現代碼

    微信小程序中頂部導航欄的實現代碼

    這篇文章主要介紹了微信小程序中頂部導航欄的實現代碼的相關資料,需要的朋友可以參考下
    2017-03-03

最新評論