create function in javascript with custom prototype

前端 未结 3 1180
名媛妹妹
名媛妹妹 2021-01-19 01:26

So I created a function like this,

var functionName = function(arg1) { //code logic here; }

At the same time, I need this function to work

相关标签:
3条回答
  • 2021-01-19 01:47

    You want to implement a delegate to myObj:

         var functionName = function(arg1) { // code }
    
         functionName.myObj = new MyObj();
         for (prop in functionName.myObj) {
           if (functionName.myObj.hasOwnProperty(prop)) {
             functionName.__defineGetter__(prop, function() { return functionName.myObj[prop]; } );
           }
         }
    
    0 讨论(0)
  • 2021-01-19 01:58

    You could set the prototype of the function.

    function functionName(arg1) { 
        //code logic here;
    }
    
    var myObj = { x: 3, y: 4 };
    functionName.prototype = myObj;
    
    var obj = new functionName();
    console.log(obj.x, obj.y); // will output 3, 4
    
    0 讨论(0)
  • 2021-01-19 02:06

    I am having the same problem here. Unfortunately, there is no good solution under EcmaScript 5.1.

    In the language specification http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf it says in 13.2 "Creating Function Objects" that the [[Prototype]] internal property of a newly created function object is always the standard built-in Function prototype object.

    As detailed in 13.3 of the same specification, using the Function constructor is also of no help as a function constructed by new Function(…) also uses the method detailed in 13.2. (This is reflected by the fact that the prototype property of Function is neither writable nor configurable.

    So to achieve what you want, you need a method to change the prototype of already existing objects. Fortunately, the upcoming Ecmascript 6 standard seems to standardises Object.prototype.__proto__ as per annex B.2.2 in the recent draft http://wiki.ecmascript.org/lib/exe/fetch.php?id=harmony%3Aspecification_drafts&cache=cache&media=harmony:working_draft_ecma-262_edition_6_05-14-13-nomarkup.pdf.

    0 讨论(0)
提交回复
热议问题