建構函式加屬性問題

2021-10-14 16:56:31 字數 1530 閱讀 3858

functionfn(

)this

.c =

3// return a

}const fn =

newfn()

//建立fn例項物件,在建立的過程中,會執行console.log('x'),所以此處會

//先輸出一次x

console.

log(fn.a)

;//undefined,因為fn中的a是變數,不是以:形式寫的屬性,所以fn中沒有a屬性

//而且建構函式裡面也不能用鍵值對的形式寫

fn.a =

3//給fn新增a屬性

console.

log(fn.a)

;//上一行加的a是fn建構函式的屬性,並不會加到fn函式的內容(constructor)裡面去

//但是有了a屬性後可以輸出a,所以列印3

console.

log(fn)

;//返回f fn()是具體的fn建構函式

console.

log(fn)

;//fn是例項物件,會返回fn,fn是鍵值對形式儲存的物件

console.

log(fn.b(

));//會先檢視fn中的b屬性,發現是函式,然後有(),會呼叫該函式

//但是b函式只寫了console.log(66),並沒有返回值,因此返回undifined

//所以外部的console.log()就是console.log(undifined)

console.

log(fn.b)

;//會返回b函式的內容

console.

log(fn.a)

;//因為fn中沒有a這個屬性,所以會返回undefined

fn.a =

77//此時加上a屬性,則可以返回

console.

log(fn)

;//此時的fn比之前的fn多了乙個a屬性

console.

log(fn.a)

;//輸出77

console.

log(fn.c)

;//輸出3

console.

log(fn(

));//因為帶了括號,說明是函式,如果有返回值,就會返回該值,如果沒有,就返回undefined

//因此會先執行fn()函式,其中會輸出一次x,然後沒有返回值,會外部輸出undefined

console.

log(fn.__proto__.

constructor()

);//fn例項物件的原型就是fn建構函式的原型物件

//原型物件的constructor屬性就是fn建構函式物件,再加乙個括號,就是執行fn()

//如此一來便和上一行**一模一樣了,會先輸出x然後輸出undefined

理解通過點的方式給建構函式加屬性並不是加到構造器中,更不會傳給例項物件就好

MAX FANOUT 屬性問題

fanout,即扇出,指模組直接呼叫的下級模組的個數,如果這個數值過大的話,在fpga直接表現為net delay較大,不利於時序收斂。因此,在寫 時應盡量避免高扇出的情況。但是,在某些特殊情況下,受到整體結構設計的需要或者無法修改 的限制,則需要通過其它優化手段解決高扇出帶來的問題。以下就介紹三個...

delete刪除屬性問題

當使用var建立乙個變數時,建立的這個屬性是不可配置的,也就是說這個變數無法通過delete運算子刪除 var demo1 1 通過var建立乙個不可刪除的全域性變數 demo2 2 建立乙個可刪除的全域性變數 demo2 this.demo3 3 同上 delete demo1 delete.de...

Vue屬性繫結class屬性問題

今天在菜鳥教程上學習 vue.js,學到 vue.js樣式繫結這一章,在物件中傳入更多屬性來動態切換class,它的原 意思是乙個100 100畫素的塊元素中原來的顏色是綠色,後被紅色覆蓋,最初本以為在 v bind class 那兒交換一下位置就好了,結果不是,而是要交換style中對應的位置 菜...