将属性或函数附加到函数对象是否有任何问题

时间:2016-10-18 03:17:33

标签: javascript function

虽然完全可以将属性或对象附加到函数对象,但我想知道它是否有任何问题并不是那么明显?我似乎无法在网上找到任何具体的内容。

var f = function(){};
f.blah = function(){};

1 个答案:

答案 0 :(得分:1)

将属性附加到函数是Javascript模拟面向对象编程的核心。

一个类由一个函数对象表示,附加到函数对象的属性决定了方法,成员和继承。

例如:

Class Animal:
    def moves:
        print("moves")
    def calls:
        print("calls")

Class Bird < Animal:
    def moves:
        print("flies")

Class Ostrich < Bird:
    def moves:
        print("runs")
    def calls:
        print("HONK")

将在Javascript中表示如下:

var Animal = function() { console.log("Animal constructor"); }
Animal.prototype.moves = function() { console.log("moves"); }
Animal.prototype.calls = function() { console.log("calls"); }

var Bird = function() { Animal.call(this); console.log("Bird constructor"); }
Bird.prototype = Object.create(Animal.prototype);
Bird.prototype.moves = function() { console.log("flies"); }

var Ostrich = function() { Bird.call(this); console.log("Ostrich constructor"); }
Ostrich.prototype = Object.create(Bird.prototype);
Ostrich.prototype.moves = function() { console.log("runs"); }
Ostrich.prototype.calls = function() { console.log("HONK"); }

有关详细信息,请查看:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript