我可以在具有相同名称的对象内部使用属性(字段)和方法吗?

时间:2017-06-24 17:03:37

标签: javascript

我有一个这样的课程:

console.log(list.Count); // 3
console.log(list.Count()); // 3

我想同时使用两种语法(无需启用/禁用某些内容)。

public class FooterViewHolder extends ViewHolder {
    public FooterViewHolder(View itemView) {
        super(itemView);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do whatever you want on clicking the item
            }
        });
    }
}

我能这样做吗?如何?谢谢!

2 个答案:

答案 0 :(得分:1)

实际上没有"方法"或"属性"在JavaScript对象中。只有"键",它们更符合属性。只是某些键将一个函数存储为其数据,并且一旦访问,就可以通过将()附加到键查找的结果来调用数据。只有存储函数的键才允许list.Count()语法。

所以,不,你不能拥有两个具有相同标识符的密钥,无论它们拥有什么数据。

但是,这超出了语法范围,直接与正确的OO设计相关。您可以通过确定密钥的用途来区分将使用属性语法与方法语法的内容。如果密钥是存储对象" state",则使用属性语法,如果密钥是调用对象" behavior",则使用方法语法,因为存储" state"并提供"行为"是对象首先为我们做的两件事。

此外,实际上没有"类"在JavaScript中。关键字及其语法是为了让经典的OO程序员感觉更有家的感觉,但在幕后,类不存在。只有对象及其原型对象。

答案 1 :(得分:0)

不确定这是否有效,或者您是否想要做类似的事情。 看看代理https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy