gpt4 book ai didi

javascript - 如何使用 'Function.prototype.call'调用未附加到任何对象原型(prototype)的函数

转载 作者:行者123 更新时间:2023-11-28 11:46:57 24 4
gpt4 key购买 nike

以下代码的输出是undefine has undefinedwheels,而不是Bike has 2wheels实例化对象是否无法调用未附加到任何对象的原型(prototype)的函数?

var vehicle = function(name, wheels){
name = "car",
wheels = 4,
fuel = "petrol"
}

function drive(name, wheels) {
console.log(this.name + " has " + this.wheels + " wheels" );
}

var vehicle1 = new vehicle('Bike' , 2);
drive.call(vehicle1); //undefined is driven with undefined wheels

最佳答案

不幸的是,您的代码几乎所有内容都是不正确的。

首先,“vehicle”函数必须在 this 上设置属性,并且应该使用传入的参数而不是常量:

var vehicle = function(name, wheels) {
this.name = name,
this.wheels = wheels,
this.fuel = "petrol"
}

然后,您的函数“drive”应该不带任何参数:

function drive() {
console.log(this.name + " is driven with " + this.wheels + " wheels" );
}

要使用您的车辆作为 this 值调用 drive():

var vehicle1 = new vehicle("Bike", 2);
drive.call(vehicle1);

.call() 的第一个参数将用作被调用函数内 this 的值。

关于javascript - 如何使用 'Function.prototype.call'调用未附加到任何对象原型(prototype)的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46564790/

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