JavaScript中的原型

时间:2016-12-15 14:08:40

标签: javascript html css prototype

我正在学习一个javascript,当我经历它时,我正在学习prototyping所以我尝试了以下代码

function vehicle(type,year){
    this.type="moped";
    this.year="2012";
}
Activa=new vehicle;
console.log(Activa.type);
console.log(Activa.year);

function speed(km){
console.log(km);
}
vehicle.prototype.speed=speed;
console.log('160km/hr'); 

上面的代码给了我正确和正确的输出

但是

当我尝试它的变量时,它并没有给我正确的输出

以下是代码

function vehicle(type,year){
    this.type="moped";
    this.year="2012";
}
Activa=new vehicle;
console.log(Activa.type);
console.log(Activa.year);

function speed(km){
 km="160";
 console.log(km);
}
vehicle.prototype.speed=speed;
console.log(Activa.speed);

上面的代码在chrome开发人员工具

中给了我以下(Chrome控制台的快照)输出

Output in console

我做错了什么?为什么它给了我像输出中我想要的输出的输出160

3 个答案:

答案 0 :(得分:3)

您的代码问题

  • speed()

  • 中的console.log(Activa.speed);方法缺少括号
  • 您的speed()方法未返回任何未定义的原因

尝试以下内容

function vehicle(type, year) {
  this.type = "moped";
  this.year = "2012";
}
Activa = new vehicle;
console.log(Activa.type);
console.log(Activa.year);

function speed(km) {
  var km = km || "160";
  console.log(km);
  return km;
}
vehicle.prototype.speed = speed;
console.log(Activa.speed());

  • 还有一个问题是你试图在JS中复制类类型行为然后你应该坚持标准,基本函数应该有第一个字符资本,如下所示 -

function Vehicle(type, year) {
  this.type = "moped";
  this.year = "2012";
}
var activa = new Vehicle;
console.log(activa.type);
console.log(activa.year);

function speed(km) {
  var km = km || "160";
  console.log(km);
  return km;
}
Vehicle.prototype.speed = speed;
console.log(activa.speed());

有关详情,请点击此处 - http://www.phpied.com/3-ways-to-define-a-javascript-class/

答案 1 :(得分:1)

那是正常的,

您正在将速度称为函数

function speed(km){
 km=km||"160";
 return km;
}

所以你应该像那样记录速度

console.log(Activa.speed());

而不是那样

console.log(Activa.speed);

你将获得正确的输出(160)

答案 2 :(得分:0)

Activa.speed是一个函数,所以如果你使用

console.log(Activa.speed());

它会输出你期望的结果。

函数也是javascript中的变量,所以console.log(Activa.speed);输出变量的内容,在本例中是一个函数。