javascript对象和函数之间的区别

时间:2017-10-04 11:27:25

标签: javascript

对象1:

var vehicle = {
        name : "car",
        wheels : 4,
        fuel : "petrol"  
}

对象2:

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

当两个对象以相同的方式描述对象vehicle时,它们之间有什么区别?

5 个答案:

答案 0 :(得分:4)

  

当两个物体以相同的方式描述目标车辆时,它们之间有什么区别?

他们没有。你的第一个vehicle是一个对象; vehicle.wheels4。你的第二个vehicle是一个函数(也是一个对象,但这里并不重要); vehicle.wheelsundefined,因为该函数没有wheels属性。您必须使用var v = new vehicle();然后使用v.wheels

当您需要一次性对象时,请使用对象初始值设定项(您的第一个示例)。如果对于具有相同形状的对象需要 factory ,请使用函数(如第二个示例)。

请注意 if 你的工厂是构造函数函数(一个期望用new调用的函数,例如你的vehicle函数),它应该最初由(压倒性的)惯例大写。

但是你的工厂不一定是构造函数,它可能是一个只返回一个对象的函数,在这种情况下你不能用它new,不会使用{{1在它里面,并不会通常大写它。 E.g:

this

(如果它想要为对象分配特定的原型,可以使用var vehicle = function(){ return { name: "car", wheels: 4, fuel: "petrol" }; } 。)无论你使用它还是Object.create或构造函数和var v = vehicle();主要是风格问题

答案 1 :(得分:1)

JavaScript中的对象是指任何实体或数据元素。然而,函数是为了实现某些目的而要执行的过程。函数可能会也可能不会返回对象。

在这种情况下,它看起来很混乱,因为它们都用于同一目的。但是,通常这不是函数的使用方式。

答案 2 :(得分:1)

您可以创建此函数/类的新实例。

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

Function/Class Objects can be instanciated.

var v1 = new vehicle(); //Here v1 is an instance of vehicle
console.log(v1.name); // Car

在这种情况下,您无法创建此Object的新实例。它只是一个对象。

var vehicle = {
        name : "car",
        wheels : 4,
        fuel : "petrol"  
}

答案 3 :(得分:1)

Amrinder是对的。在第一个示例中,您将创建一个对象

var vehicle = 
{
    name : "car",
    wheels : 4,
    fuel : "petrol"  
}
//vehicle.name shows "car"

如果使用选项2,则创建一个函数,您可以调用该函数来创建具有给定值的对象:

var vehicle2 = function()
{
        this.name = "car",
        this.wheels = 4,
        this.fuel = "petrol"   
}
var vehicle = new vehicle2(); 
//vehicle.name shows "car"

答案 4 :(得分:0)

  1. 对象 - >有财产
  2. 功能 - >返回一些值/对象用对象做一些手术
  3. GetAdaptersAddresses()