javascript框架中關於function函式表示式使用的問題

時間 2021-06-07 05:14:05

1樓:Saviio

我一點都不覺得這有什麼不好理解或者困惑的。

設命名空間如下:

varnamespace={}

乙個是例項屬性

namespace

.foo

=function

(arg1

,arg2

)var

ins=

newnamespace

.foo(10

,20)乙個是靜態方法

namespace

.foo

.isEven

=function(x

)namespace

.foo

.isEven

(ins

.field1

)// => true

不清晰麼?非要顯式宣告乙個Init函式以工廠的形式提供呼叫才是清晰麼,不覺得呀?

如果你用ES6:

class

Foostatic

isEven(x

)}varins

=new

Foo(10,

20)Foo.

isEven

(ins

.field1

)而另一門典型的動態語言 - Python的構造形式如下(與ES6更像):

class

Foo():

def__init__

(self

,arg1

,arg2

):self

.field1

=arg1

self

.field2

=arg2

@staticmethod

defisEven(x

):returnx%

2==0ins

=Foo(10

,20)Foo

.isEven

(ins

.field1

)而通常情況下,我們程式設計難道不是應該用一種更具有普適性的方式編寫嗎?

至於另外一門在設計上和JS更接近的動態語言 - Lua的話,OO的模擬大概可以是這樣的,你自己比較吧。

Foo=

{}function

Foo.

new(

arg1

,arg2

)local

self

=setmetatable

({},

Foo)

self.field1

=arg1

self.field2

=arg2

return

self

endfunction

Foo.

isEven(x

)returnx%

2==0end

ins=

Foo.new(10

,20)Foo.isEven

(ins.field1)

2樓:咕嚕捨小二

並不一樣的,前者是用function定義類,你的方法是簡單定義了乙個物件。如果沒有猜錯的話,他這麼做是準備做工廠模式使之進行多個地方的引用。 邏輯完全不同。

關於javascript中defineProperty的問題?

牧歌 為了避免衝突,讓上下文更安全。 itlr Object.defineProperty 更強大 This method allows precise addition to or modification of a property on an object.Normal property ad...

javascript 關於 propertyIsEnumerable 的問題?

你應該用 arr.propertyIsEnumerable length arr.propertyIsEnumerable length arr.propertyIsEnumerable window.length arr.propertyIsEnumerable 0 假設你所在的視窗沒有 fram...

javascript中object keys方法使用的問題(實操和書上寫的不相符)?

混混蛋 Object.keys obj 返回obj的自身 不包含原型鏈上的 的所以可列舉屬性的名字陣列 for in迴圈則包含原型鏈.for name in obj Object.getOwnPropertyNames obj 返回obj自身 不含原型鏈上的 的所有屬性名陣列,包括不可列舉的 想要獲...