js高階 傳統建構函式存在的問題

2021-08-14 00:15:50 字數 960 閱讀 1791

//寫乙個建構函式 用來建立學生物件

//屬性:姓名 年齡 身高 體重

//行為:學習 吃飯 看片 把妹

function

student

(name) }

//如果建構函式沒有引數,那麼在呼叫的時候小括號可以省略

varstu =

newstudent

("胡一天");

stu.

study();

varstu1 =

newstudent

("沈悅");

stu1.

study();

//上面兩個物件的實際情況如下圖:

每個學生物件的study函式都是同一句**,那同樣的**在記憶體裡面佔兩份就不合適。因為封裝函式是為了復用,所以這個情況就要考慮封裝函式

//如果在建構函式內部定義函式,那麼每次建立物件時都會重新建立該函式

//但是函式內部**完全相同就造成了資源浪費

//為了解決這個問題,就要讓所有的物件共用乙個方法

//在建構函式外部定義好該函式,將該函式賦值給建構函式內的方法

//使用這種方式寫好的方法中的this指向的是呼叫該方法的物件

//this 誰呼叫就是誰

//如果沒有物件呼叫則預設是window呼叫,即this預設指向window

//使用這種方式存在的問題

//1、全域性變數增多造成汙染

//2、**結構混亂,不易維護

JS高階之建構函式

先建立object物件,再動態新增屬性 方法 起始時不確定物件內部資料 語句太多 var a newobject p.name tom p.age 18p.setname function name p.setname jack console.log p.name,p.age script 使用 ...

JS高階 原型 建構函式的繼承

定義父類的person的建構函式 function person name 定義父類person的原型 person.prototype.sayname function 定義子類建構函式student function student name,age 子類繼承父類原型 子類student原型繼承...

一 js高階 2 建構函式 原型物件

3.建構函式用new建立例項的過程 1 建立乙個空物件 2 將this 指向例項,將函式的作用域賦給空物件 3 建立新物件 4 返回新物件 使用建構函式不僅 更加簡潔,更重要的是能夠識別物件的型別了 4.建構函式的例項的關係 1 例項的constructor 建構函式 console.log p1....