JavaScript创建对象的新实例
因此,我正在设计一个成绩册界面,我的课程定义如下:JavaScript创建对象的新实例,javascript,object,instances,Javascript,Object,Instances,因此,我正在设计一个成绩册界面,我的课程定义如下: <script> course = new Object(); var name; var gradingareas; var finalgrade; </script> 我也试过了,前面没有var也没有用。我得到了一个“UncaughtTypeError:Object不是函数”我对javascript非常陌生,所以我甚至不知道我是否用正确的方法来处理这个问题。谢谢你的帮助 您现有的代码: // Creates
<script>
course = new Object();
var name;
var gradingareas;
var finalgrade;
</script>
我也试过了,前面没有var也没有用。我得到了一个“UncaughtTypeError:Object不是函数”我对javascript非常陌生,所以我甚至不知道我是否用正确的方法来处理这个问题。谢谢你的帮助 您现有的代码:
// Creates a new, empty object, as a global
course = new Object();
// Creates three new variables in the global scope.
var name;
var gradingareas;
var finalgrade;
变量和对象之间没有联系
看起来你想要的东西更像:
function Course(name, gradingareas, finalgrade) {
this.name = name;
this.gradingareas = gradingareas;
this.finalgrade = finalgrade;
}
然后:
注意使用大写字母命名构造函数函数。这是JS社区的一个惯例。JS是原型,而不是基于类的,如果您对它不熟悉,那么可以立即学习这一点,而不是试图从中大量使用经典继承模型。然而,经典继承在JS中仍然存在 无论如何,要回答如何访问变量:
course1.name
适用于上述示例
如果您想将数据私有化,可以采用以下方法:
var Course = function(name, grade) {
// Private data
var private = {
name: name,
grade: grade
}
// Expose public API
return {
get: function( prop ) {
if ( private.hasOwnProperty( prop ) ) {
return private[ prop ];
}
}
}
};
然后实例化一个新对象:
var课程=新课程('JavaScript编程,'A')代码>
并开始使用所有私有数据:
course.get('name')代码>
当然,您可能也希望setter操作这些数据;) 您描述的代码执行以下操作:
// Declares a memory variable called course and stores and object in it
var course = new Object();
// Declares three variables
var name;
var gradingareas;
var finalgrade;
这些声明的变量不会自动连接到对象。如果要在对象上声明这些属性,有2个选项:
将它们声明为对象的属性
在对象的原型上声明它们
示例1:将它们声明为对象的属性:
//声明一个名为course的内存变量,并在其中存储和对象
var course=新对象();
//使用访问或创建新属性。或[]运算符
course.name='math';
course.gradingaras='muliple';
课程['finalgrade']='A'
控制台日志(课程)代码>要创建具有构造函数和默认值的非常简单的对象,可以执行以下示例:
//My object with constructor
var myObjectWithConstrutorFunction = {
//construtor function with default values in constructor
myConstrutor: function(Name = 'bob', Age = 18){
this.Name = name;
this.Age = age;
}
};
// instance
var myInstance = new myObjectWithConstrutorFunction.myConstrutor();
// show on console
console.log('object with constructor function: ', myInstance);
// show properties
console.log(myInstace.Name, myInstance.Age);
PS:如果您正在创建外部类,那么创建一个与类同名的构造函数名是一个很好的实践。请先阅读这里的基础知识:。那么我如何引用使用函数创建的课程字段?我的想法是,我希望像java中的一个类的实例一样保留这些内容。谢谢您的解释!你救了我。我花了几个小时试图修复一个bug,问题是我不理解javascript的oo结构。尽管两个答案都是正确的,但这一个对我来说比公认的答案更有意义。
// Declares a memory variable called course and stores and object in it
var course = new Object();
// Declares three variables
var name;
var gradingareas;
var finalgrade;
//My object with constructor
var myObjectWithConstrutorFunction = {
//construtor function with default values in constructor
myConstrutor: function(Name = 'bob', Age = 18){
this.Name = name;
this.Age = age;
}
};
// instance
var myInstance = new myObjectWithConstrutorFunction.myConstrutor();
// show on console
console.log('object with constructor function: ', myInstance);
// show properties
console.log(myInstace.Name, myInstance.Age);