JS對象分類

分類原因:
分類就可以少占內(nèi)存

new語法

將函數(shù)與原型結(jié)合

函數(shù)的特征

  1. 都有prototype屬性,存儲原型地址
  2. 每個prototype都有一個constructor屬性,是來告訴別人構(gòu)造這個屬性的爹是誰

new語法的寫法和特征

newX()
特征

  1. 自動創(chuàng)建一個新的對象
  2. 自動為空對象關(guān)聯(lián)原型,原型地址為X.prototype
  3. 自動將不知道叫什么的空對象,作為this語法的關(guān)鍵字,來運行構(gòu)函數(shù)(構(gòu)造函數(shù)是指創(chuàng)建對象的函數(shù))
  4. 自動return this
    eg.
function Person(name, age) {//()里寫變量名,function Person{}里面寫自身所有屬性
  this.name = name;
  this.age = age;
}
Person.prototype.sayHi = function() {//這里Person.prototype.后面加共有屬性的名字,且下面寫的是共有屬性
  console.log("你好,我叫" + this.name);
};
let person = new Person("frank", 18);
person.name === "frank"; // true
person.age === 18; // true
person.sayHi(); // 打印出「你好,我叫 frank」

構(gòu)造函數(shù)X(名字為X)

  1. X函數(shù)本身負責(zé)給對象添加屬性
  2. X.prototype對象負責(zé)保存對象的共有屬性

規(guī)范

  1. 大小寫
  • 所有構(gòu)造函數(shù)首字母大寫,被構(gòu)造的對象首字母小寫
  1. 詞性
  • 構(gòu)造函數(shù)中,new后面的函數(shù)名字為名詞
    eg
    new Person()
  • 其他函數(shù)用動詞開頭
    eg.
    createSquare
    Tips:
    Js構(gòu)造函數(shù)不一定只有一個參數(shù),具體的可以看mdn文檔

class 語法

  1. JS 構(gòu)造對象目前有兩種方式,一種是用構(gòu)造函數(shù)+prototype(new語法),一種是用 class,關(guān)于這兩種方式,兩者方式 JS 都支持,JS 是一門包容的語言,提供了多種表達形式,兩者方式都能表達程序員的思想。
  2. 構(gòu)造函數(shù)+prototype 是先提供的,class 是后提供的,說明 構(gòu)造函數(shù)+prototype 是 JS 一開始的基因,而 class 的粉絲其實更喜歡 class,所以兩種都有必要學(xué)習(xí)。
    class是es6新出的功能,與prototype那個語法功能相同
    eg.
  constructor(name, age) {//()里面寫的是變量名
    this.name = name;//{}constructor里面寫的是自身所有屬性
    this.age = age;
  }
  sayHi() {//constructor外面外面這里寫的是公有屬性,Sayhi是共有屬性的名字
    console.log("你好,我叫" + this.name);
  }
}
let person = new Person("frank", 18);
person.name === "frank"; // true
person.age === 18; // true
person.sayHi(); // 打印出「你好,我叫 frank」

數(shù)組對象

  1. 定義數(shù)組
let arr=[1,2,3]===let arr=new Array(1,2,3)

2.自身屬性:長度(無法用object.keys查出)

  1. 常用API,上mdn查

函數(shù)

  1. 定義函數(shù)
    eg.
function fn(x,y){return x+y}
===let fn=function fn(x,y){return x+y}
===let fn=(x,y)=>{x+y}
## 原型公式
如何確定原型:

let obj=new Object()

new什么,就是什么.prototype,比如這里就是Object.prototype
對象.___proto___===構(gòu)造函數(shù).prototype
## 坑
1. 屬性不等于屬性值,屬性是名,是key,屬性值是值。
2. JS類型不等于JS分類,類型是四基而空一對象,分類的是只有對象有分類,
JS 中的類型有:數(shù)字、字符串、布爾、符號Symbol、null、undefined、對象
 JS 中的類有:對象 Object、數(shù)組 Array、函數(shù) Function 等
3. Object.prototype
* 是一個對象(這么說不嚴謹,應(yīng)該說 Object.prototype 保存著一個對象的地址)
* 包含了 toString、valueOf、hasOwnProperty 等對象共有的屬性
* Object.prototype 是所有對象的原型(除了它自己)
* Object.prototype 自己的原型為 null,Object.prototype 是根對象
4. window.Object 是一個函數(shù)對象,那么這個函數(shù)對象的構(gòu)造函數(shù)是Function
5. window.Function 是一個函數(shù)對象,那么這個函數(shù)對象的構(gòu)造函數(shù)是Function
6. window.Object 是一個函數(shù)對象,那么這個對象的 __proto__ 是Function.prototype
7. window.Function 是一個函數(shù)對象,那么這個對象的 __proto__ 是Function.prototype
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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