扩展功能并实例化它 - javascript

时间:2014-06-03 13:38:20

标签: javascript

-
你好,今天我带着一个谦卑的问题来到你面前,因为我显然缺少一些相当基本的东西。

我正在尝试,而且我不明白为什么它不起作用,要“扩展”一个功能。

具体来说,请考虑以下代码: 似乎变量已经从console.log中丢失了,即使它们被定义了。

然而,这似乎不是实现我想要实现的目标的正确方法。

要求:`使用变量和方法扩展函数,以便该函数的所有新实例都将接收这些变量。您可以考虑“类变量”。

Super = function (){}; //yes it's global.

Super.prototype.alert = function() 
{
    console.log('alert function');  
}

ExtendSuper = function(arguments) //yes it's global
{
  **EDIT , THIS IS THE ANSWER THANKS TO YURY**

 return function () {
    return new Super(arguments);
   }

}

arguments = {} //some object with variables and functions
ExtendedFunction = ExtendSuper(arguments); //yes it's global
success = new ExtendedFunction();//yes, it's global

1 个答案:

答案 0 :(得分:2)

编辑: OP已经改变了问题,使代码示例无关紧要。对他有好处!

你实际上有一些关于继承的奇怪想法。我建议你在为时太晚之前重新考虑你的应用程序。 :)你确实需要原型,因为它们是javascript的重要组成部分。

无论如何http://jsfiddle.net/uj4ag/

var DomDom = (function(){ //Do not need a function? Use IEFE
    function View(bootstrap) //my "view" class
        {   var view = this;    
            view.$elm = false; view.model = false;
            view.render = function()
            {
                console.log('rendering something');
            }
            $.extend(view,bootstrap);
        };


    return  {
        View:  View,

        extend: {
            View: function(params) {//Let's create a new function :)
                return function() { //it is not an inheritance it is 'currying'
                    return new View(params);    
                }
            }
        }

    }
}());

var SubClass = DomDom.extend.View({ 
        foobar : true,
        alert : function () { alert('hi')},
        render : function() { console.log('rendering something else')},
});

var viewInst = new DomDom.View;
var subClassInst = new SubClass();

viewInst.render();
subClassInst.render();