gpt4 book ai didi

javascript - 将参数传递给javascript中的原型(prototype)函数

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:58 25 4
gpt4 key购买 nike

我最近一直在尝试使用 javascript 进行原型(prototype)设计,但我不明白为什么以下代码不起作用。我想做的是用参数 n 创建一个新的 cheese 实例。

function food(n) {
this.n=n;
}
function cheese(n) {
alert(this.n);
}
cheese.prototype=new food;
new cheese('paramesian');

最佳答案

您正在创建一个新的 Cheese 实例,并且参数 n 从未被使用或分配给 Cheese 实例变量 this .n,因为该逻辑仅用于 Food 构造函数。

你可以做几件事:

1 。 Apply Cheese 函数中的 Food 构造函数,使用 arguments 对象和新创建的上下文 (this)。

function Food(n) {
this.n=n;
}

function Cheese(n) {
Food.apply (this, arguments);
alert(this.n);
}

new Cheese('paramesian');

2。在 Cheese 构造函数上重复 Food 构造函数逻辑 (this.n = n):

function Food(n) {
this.n=n;
}

function Cheese(n) {
this.n = n;
alert(this.n);
}

Cheese.prototype = new Food();
new Cheese('paramesian');

3。使用另一种技术,例如 power constructors :

function food (n) {
var instance = {};
instance.n = n;

return instance;
}


function cheese (n) {
var instance = food(n);
alert(instance.n);

return instance;
}

cheese('parmesian');
cheese('gouda');

4。还有一个选择,prototypal inheritance :

// helper function
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F () {}
F.prototype = o;
return new F();
};
}

var food = {
n: "base food",
showName : function () { alert(this.n); }
};

var cheese1 = Object.create(food);
cheese1.n = 'parmesian';
cheese1.showName(); // method exists only in 'food'

关于javascript - 将参数传递给javascript中的原型(prototype)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1814201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com