如何创建具有未分配属性的Javascript构造函数/原型?
我是从面向对象编程的角度来看这个问题的,并试图用Javascript来理解“类”。我希望能够创建一个具有属性的类,但不必立即为它们赋值。如下所示:如何创建具有未分配属性的Javascript构造函数/原型?,javascript,class,object,constructor,prototype,Javascript,Class,Object,Constructor,Prototype,我是从面向对象编程的角度来看这个问题的,并试图用Javascript来理解“类”。我希望能够创建一个具有属性的类,但不必立即为它们赋值。如下所示: var MyObject = function(id) { this.id = id; // Create the property so it is present on all instances but don't require it to be assigned to right away. this.friendI
var MyObject = function(id) {
this.id = id;
// Create the property so it is present on all instances but don't require it to be assigned to right away.
this.friendId;
}
MyObject.prototype = {
constructor: MyObject
// Etc...
}
有没有办法做到这一点,或者我只是不了解它在Javascript中的工作原理?只需在声明中省略属性:
function MyObject(id)
{
this.id = id;
}
var obj = new MyObject(123);
console.log(obj.friendId); // undefined
或者,在构造函数中将其显式设置为
null
。只需从声明中省略属性:
function MyObject(id)
{
this.id = id;
}
var obj = new MyObject(123);
console.log(obj.friendId); // undefined
或者,在构造函数中将其显式设置为
null
。只需从声明中省略属性:
function MyObject(id)
{
this.id = id;
}
var obj = new MyObject(123);
console.log(obj.friendId); // undefined
或者,在构造函数中将其显式设置为
null
。只需从声明中省略属性:
function MyObject(id)
{
this.id = id;
}
var obj = new MyObject(123);
console.log(obj.friendId); // undefined
或者,在构造函数中将其显式设置为
null
。这篇Mozilla开发者网络文章是一篇很好的阅读材料。
它比较了基于类的语言和基于原型的语言,并以Java和JavaScript提供了并排的代码示例
从文章中引用
构造函数或原型指定一组初始属性。可以向单个对象或整个对象集动态添加或删除特性
这篇Mozilla开发者网络文章读起来很好。 它比较了基于类的语言和基于原型的语言,并以Java和JavaScript提供了并排的代码示例 从文章中引用 构造函数或原型指定一组初始属性。可以向单个对象或整个对象集动态添加或删除特性
这篇Mozilla开发者网络文章读起来很好。 它比较了基于类的语言和基于原型的语言,并以Java和JavaScript提供了并排的代码示例 从文章中引用 构造函数或原型指定一组初始属性。可以向单个对象或整个对象集动态添加或删除特性
这篇Mozilla开发者网络文章读起来很好。 它比较了基于类的语言和基于原型的语言,并以Java和JavaScript提供了并排的代码示例 从文章中引用 构造函数或原型指定一组初始属性。可以向单个对象或整个对象集动态添加或删除特性
this.friendId=null
JavaScript实际上没有“类”。试图让它表现得像那样是一种挫败自己的好方法。@Peter-很酷,谢谢。为什么你需要它“存在”而不是假装它无处不在并在你需要时分配它(鸭子打字)?一个没有价值的财产有什么意义?由于javascript是松散类型的,所以在准备分配值之前,创建属性没有多大意义。顺便说一句,Peter的评论确实指定了一个值,即空值,因此它所做的正是您明显不想做的事情。:-)this.friendId=null
JavaScript实际上没有“类”。试图让它表现得像那样是一种挫败自己的好方法。@Peter-很酷,谢谢。为什么你需要它“存在”而不是假装它无处不在并在你需要时分配它(鸭子打字)?一个没有价值的财产有什么意义?由于javascript是松散类型的,所以在准备分配值之前,创建属性没有多大意义。顺便说一句,Peter的评论确实指定了一个值,即空值,因此它所做的正是您明显不想做的事情。:-)this.friendId=null
JavaScript实际上没有“类”。试图让它表现得像那样是一种挫败自己的好方法。@Peter-很酷,谢谢。为什么你需要它“存在”而不是假装它无处不在并在你需要时分配它(鸭子打字)?一个没有价值的财产有什么意义?由于javascript是松散类型的,所以在准备分配值之前,创建属性没有多大意义。顺便说一句,Peter的评论确实指定了一个值,即空值,因此它所做的正是您明显不想做的事情。:-)this.friendId=null
JavaScript实际上没有“类”。试图让它表现得像那样是一种挫败自己的好方法。@Peter-很酷,谢谢。为什么你需要它“存在”而不是假装它无处不在并在你需要时分配它(鸭子打字)?一个没有价值的财产有什么意义?由于javascript是松散类型的,所以在准备分配值之前,创建属性没有多大意义。顺便说一句,Peter的评论确实指定了一个值,即空值,因此它所做的正是您明显不想做的事情。:-)在那个文档中,它有初始化“空”属性的构造函数的示例,也就是说,没有给它们分配实际值,这是我试图完成的。在那个文档中,它有初始化“空”属性的构造函数的示例,也就是说,没有给它们分配实际值,这是我试图完成的。在那个文档中,它有初始化“空”属性的构造函数的例子,也就是说,没有给它们分配实际值,这就是我试图实现的。在那个文档中,它有初始化“空”属性的构造函数的例子,也就是说,没有给它们分配实际值,这就是我试图实现的。