首頁  >  文章  >  web前端  >  es6靜態屬性和實例屬性的差別是什麼

es6靜態屬性和實例屬性的差別是什麼

青灯夜游
青灯夜游原創
2022-04-13 13:52:542396瀏覽

區別:1、靜態屬性是類別本身的屬性,只能在類別本身調用,而實例屬性是實例物件的屬性;2、實例物件無法呼叫靜態屬性,但類別可呼叫實例屬性; 3.靜態屬性只有一種宣告方法,語法“類別名稱.屬性名稱=值”,而實例屬性有多種宣告方法,例類別中用“屬性名稱=值”定義。

es6靜態屬性和實例屬性的差別是什麼

本教學操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn