相关疑难解决方法(0)

已弃用的替代__proto__

当然,我是一个javascript noob(充其量).以下代码似乎工作正常.任何想法如何保持相同的"初始化程序"方法,并使其工作,而无需使用__proto__和不转换所有内容到构造函数?

var Employee =
    {
    paygrade: 1,
    name: "",
    dept: "general",

    init: function()
        {
        return this;
        },

    salary: function()
        {
        return this.paygrade * 30000;
        }
    };



var WorkerBee =
    {
    paygrade: 2,
    projects: ["Project1", "Project2"],

    init: function()
        {
        this.__proto__ = Inherit_Employee;  // Inherit My Employee "Pseudo Prototype"
        return this;
        }
    };


var SalesPerson =
    {
    dept: "Sales",
    quota: 100,

    init: function()
        {
        this.__proto__ = Inherit_WorkerBee; // Inherit My WorkerBee "Pseudo Prototype"
        return this;
        }
    };


var Engineer …
Run Code Online (Sandbox Code Playgroud)

javascript

15
推荐指数
2
解决办法
9263
查看次数

使用自定义原型实例化JavaScript函数

我使用以下函数从一组参数创建JavaScript中的函数实例:

var instantiate = function (instantiate) {
    return function (constructor, args, prototype) {
        "use strict";

        if (prototype) {
            var proto = constructor.prototype;
            constructor.prototype = prototype;
        }

        var instance = instantiate(constructor, args);
        if (proto) constructor.prototype = proto;
        return instance;
    };
}(Function.prototype.apply.bind(function () {
    var args = Array.prototype.slice.call(arguments);
    var constructor = Function.prototype.bind.apply(this, [null].concat(args));
    return new constructor;
}));
Run Code Online (Sandbox Code Playgroud)

使用上面的函数,您可以按如下方式创建实例(请参阅小提琴):

var f = instantiate(F, [], G.prototype);

alert(f instanceof F); // false
alert(f instanceof G); // true

f.alert(); // F

function F() { …
Run Code Online (Sandbox Code Playgroud)

javascript prototype instantiation

6
推荐指数
1
解决办法
849
查看次数

如何在JavaScript中克隆构造函数?

我有一个构造函数Monkey():

function Monkey(name, age) {
    this.name = name;
    this.age = age;
}
Run Code Online (Sandbox Code Playgroud)

我想创建另一个以Human()额外属性命名的构造函数,该属性cars将存储该人拥有的汽车数量以及Monkey具有(如)的所有属性nameage

我不想重复MonkeyHuman内容中的所有内容.是可以克隆Monkey并与扩展属性的原型

javascript

4
推荐指数
1
解决办法
827
查看次数

什么已经取代了JavaScript中已弃用的__proto__

我试图找出如何从另一个实例化的对象实例化一个新对象,而无需使用new运算符.以下代码有效,但我听说__proto__属性已折旧.

var MyObject = function( arg ) {

    this.value = arg;

};

MyObject.prototype.getValue = function() {

    return this.value;

};

// Standard way of instantiating an object
var object1 = new MyObject( 'foo' );

// Creating new object based on another without using new operator
var object2 = {};
object2.__proto__ = object1.__proto__
object1.constructor.call( object2, 'bar' );

console.log( object1 );
console.log( object2 );
Run Code Online (Sandbox Code Playgroud)

那么如果没有__proto__属性我该如何做呢?

javascript prototype

2
推荐指数
1
解决办法
2702
查看次数

标签 统计

javascript ×4

prototype ×2

instantiation ×1