區別:1、靜態屬性是類別本身的屬性,只能在類別本身調用,而實例屬性是實例物件的屬性;2、實例物件無法呼叫靜態屬性,但類別可呼叫實例屬性; 3.靜態屬性只有一種宣告方法,語法“類別名稱.屬性名稱=值”,而實例屬性有多種宣告方法,例類別中用“屬性名稱=值”定義。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
靜態的就是不會被實例繼承的,是屬於類別本身的,實例繼承不了,也呼叫不了,跟作用域一樣。
靜態屬性:就是類別本身的屬性,只能在類別本身調用,實例物件是無法調用到靜態屬性的,只能類別自身調用,當然子類別也可以調用父類別的靜態屬性;
實例屬性:就是實例的屬性,實例物件可以呼叫的實例屬性,記住實例是無法呼叫類別的靜態屬性的,但是類別可以呼叫實例屬性;
聲明靜態屬性:
就和普通的Object新增屬性一樣,object.a = 值;
(目前唯一一種方法);有人提議在類別內部加上static關鍵字,但還沒實作
class F{}; F.b="父类的静态属性";//给F类加静态方法
聲明靜態方法:在方法前面加上static關鍵字
class Foo { static bar () {//静态方法 静态方法中的this指向类本身而不是实例 this.baz(); } static baz () {//静态方法 console.log('hello'); } } Foo.bar() // hello new Foo().bar();//实例调用不了,会报错
宣告實例屬性:
1,在類別中定義
class MyClass { myProp = 42; constructor(props) { console.log(this.myProp); // 42 this.name=props.name } } //上面代码中,myProp就是MyClass的实例属性。在MyClass的实例上,可以读取这个属性。
2,在constructor中定義(react中經典寫法)
class ReactCounter extends React.Component { constructor(props) { super(props);//可以让子类继承 this.state = { count: 0 }; } } //等价于 class ReactCounter extends React.Component { state = { count: 0 }; }
#靜態屬性與實例屬性的差異總結:
靜態屬性是類別本身的屬性,只能在類別本身呼叫;而實例屬性是實例物件的屬性,可以被實例物件呼叫。
實例物件是無法呼叫靜態屬性的,只能類別自身呼叫;而類別可以呼叫實例屬性。
靜態屬性只有一種宣告方法,而實例屬性有多種宣告方法。
實例屬性定義在實例上,可以在建構子的內部的this上定義,也可以在建構子實例化以後的實例上定義。
靜態屬性,定義在建構子之上的屬性。可透過構造函數直接存取。
【相關推薦:javascript影片教學、web前端】
#以上是es6靜態屬性和實例屬性的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!