this與class(原型)
class :類,是物件的模板。(或者叫:原型) this :當前物件。 以上定義,與 java 中的概念是相同的。 但是,由於 javascript 語言自身的特點,關於 class 與 this ,還需要做進一步說明。
注意:在javascript 中,在定義類完畢之後,還可以再新增屬性和方法。
屬性與方法新增到this 上
class Point {
constructor() { }}let p = new Point();
p.username = 'zhangsan';
console.log(p.username); //zhangsan
上面程式碼中,Point 類定義之後,給物件 p 又新增了一個 username 屬性。跟單網這是完全可以的。 但是要注意:此種方式,僅僅是給物件 p 新增一個屬性,而不是給類新增一個屬性。 或者說: 此種方式,僅僅是給物件 p 的 this 新增一個屬性,而不是給類新增一個屬性。
class Point {
constructor() { }}let p1 = new Point();
p1.username = 'zhangsan';
console.log(p1.username); //zhangsan
let p2 = new Point();
console.log(p2.username); //undefined
上面例子中,只給物件p1 新增了 username 屬性,但沒有給類新增屬性。 所以, p2 物件中並沒有 username 屬性。
屬性與方法新增到類上
class Point {
constructor() { }}
Point.prototype.username = 'zhangsan';
let p1 = new Point();
console.log(p1.username); //zhangsan
let p2 = new Point();
console.log(p2.username); //zhangsan
上面程式碼中,使用 Point.prototype 方式,給類新增屬性。 這樣,類的所有物件( p1 、 p2 )就都有 username 屬性了。
在javascript 中,每一個類都有一個 prototype ,它就是類的原型,類的所有例項共享一個原型。如果想訪問這個原型,可以使用 proto 指標。
樣例程式碼:
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
class Point {
constructor() { }
}
let p = new Point();
console.log(p.__proto__); // 注意 proto 指標的寫法
/**
* 輸出結果:
* {constructor: ƒ}
* constructor: class Point // 這裡證明: proto 指標指向類的原型
* __proto__: Object
*/
let p1 = new Point();
let p2 = new Point();
// 這裡證明:類的所有例項共享一個原型
console.log(p1.__proto__===p2.__proto__); //true
</script>
</body></html>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2738419/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 原型與原型鏈原型
- es6 class進階【一個將class轉原型物件的例子】原型物件
- 用原型實現Class的各項語法原型
- JavaScript原型與原型鏈JavaScript原型
- 原型物件與原型鏈原型物件
- JavaScript 原型 與 原型鏈JavaScript原型
- javascript——原型與原型鏈JavaScript原型
- JS 原型與原型鏈JS原型
- 詳解js原型,建構函式以及class之間的原型關係JS原型函式
- JavaScript中原型與原型鏈JavaScript原型
- 原型、原型鏈與繼承原型繼承
- javascript之原型與原型鏈JavaScript原型
- JS中的原型與原型鏈JS原型
- JS原型與原型鏈圖解JS原型圖解
- 7. JavaScript 原型與原型鏈JavaScript原型
- JavaScript系列之原型與原型鏈JavaScript原型
- 再解 JavaScript 原型與原型鏈JavaScript原型
- 【JS面試向】深入原型鏈之class的繼承JS面試原型繼承
- 深入理解JS原型與原型鏈JS原型
- 深入JavaScript系列(六):原型與原型鏈JavaScript原型
- 原型與原型鏈 - 物件與函式關係筆記原型物件函式筆記
- 面試之JS篇 - 原型與原型鏈面試JS原型
- js基礎--原型物件與原型物件鏈JS原型物件
- 2019 面試準備 - JS 原型與原型鏈面試JS原型
- JS基礎總結(2)——原型與原型鏈JS原型
- [JavaScript]原型、原型鏈、建構函式與繼承JavaScript原型函式繼承
- Class與ClassLoader深入淺析
- vue 的 class 與 style 使用Vue
- Object與Class的關係Object
- Vue Class與Style繫結Vue
- vue Class 與 Style 繫結Vue
- id與class 命名規則
- class語法與繼承繼承
- 對ES6中類class以及例項物件、原型物件、原型鏈之間關係的詳細總結物件原型
- javascript - 繼承與原型鏈JavaScript繼承原型
- 【原型鏈汙染】Python與Js原型PythonJS
- 一次性搞懂js中的原型與原型鏈JS原型
- 從問題入手,深入瞭解JavaScript中原型與原型鏈JavaScript原型