這篇文章主要介紹“javascript中new方法怎么使用”,在日常操作中,相信很多人在javascript中new方法怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”javascript中new方法怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在JavaScript中,new運算符用于創建一個自定義對象實例,或者是一個構造函數內置對象的實例;new創建出來的實例可以訪問構造函數Person內的屬性。
本教程操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。
new 的用途
new:new 運算符用于創建一個自定義對象實例,或者是一個構造函數內置對象的實例。啥意思呢,有點拗口,我們先看個栗子先。
new F() 時,發生了什么
第一版
栗子在這:
function Person(name, age) {
this.name = name
this.age = age
console.log(this) // Person{name: "xuedinge", age: "20"}
}
Person.prototype.have = "cat"
const person = new Person("xuedinge", "20")
console.log(person.name) // xuedinge
console.log(person.have) // cat
console.log(person) // Person{name: "xuedinge", age: "20"}從這個栗子中,我們可以看到,new 具有以下能力:
1、new 創建出來的實例可以訪問構造函數Person內的屬性;
2、new 創建出來的實例可以訪問構造函數原型上的屬性;
3、new 可以將構造函數中的this綁定到新創建出來的對象上;
那我們就先針對new的這三個能力先實現一下:
function fakeNew(Fn) {
// 創建一個空對象
let obj = new Object()
// 將新對象的原型指針指向構造函數的原型
obj.__proto__ = Fn.prototype
// 處理除了 Fn 以外的剩余參數
Fn.apply(obj, [].slice.call(arguments, 1))
return obj
}看下效果
function Person(name, age) {
this.name = name
this.age = age
console.log(this) // Person {name: "xuedinge", age: "20"}
}
Person.prototype.have = "cat"
function fakeNew(Fn) {
// 創建一個空對象
let obj = new Object()
// 將新對象的原型指針指向構造函數的原型
obj.__proto__ = Fn.prototype
// 處理除了 Fn 以外的剩余參數
Fn.apply(obj, [].slice.call(arguments, 1))
return obj
}
const newPerson = fakeNew(Person, "xuedinge", "20")
console.log(newPerson.name) // xuedinge
console.log(newPerson.have) // 20
console.log(newPerson) // Person {name: "xuedinge", age: "20"}看樣子跟new的能力比較相像了。但是當構造函數里有返回值時,是怎么樣子的呢,再看個:
// 當返回值是對象時:
function Person(name, age) {
this.name = name
this.age = age
console.log(this) // Person {name: "xuedinge", age: "20"}
return {
car: "leikesasi"
}
}
Person.prototype.have = "cat"
const person = new Person("xuedinge", "20")
console.log(person.name) // undefined
console.log(person.have) // undefined
console.log(person.car) // leikesasi
console.log(person) // {car: "leikesasi"}可以看出,當構造函數有返回值是對象時,new創建的實例對象就是構造函數返回的結果,當返回值是普通對象時呢,看下面這個:
// 當返回值是普通值時:
unction Person(name, age) {
this.name = name
this.age = age
console.log(this) // Person{name: "xuedinge", age: "20"}
return "leikesasi"
}
Person.prototype.have = "cat"
const person = new Person("xuedinge", "20")
console.log(person.name) // xuedinge
console.log(person.have) // cat
console.log(person) // Person{name: "xuedinge", age: "20"}當返回值是普通對象時,跟沒有返回值時,結果是一致的。
到此,關于“javascript中new方法怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。