直接使用new Object()javascript
var obj = new Object();
使用空的{}大括号php
var obj2 = {};
咱们要为建立的对象增长属性和访问属性的值!java
JavaScript是弱类型的语言,能够动态的添加属性。markdown
obj.age = 20; obj.name = "zhongfucheng"; obj.say = function () { alert("hello"); };
var aa = obj.age; var bb = obj.name;
var aa = [obj["age"]]; var bb = [obj["name"]];
使用function来模拟建立类,function充当了构造函数函数
//测试函数 function test() { var teacher = new Teacher(); } //使用function来模拟类 function Teacher() { }
上面的function来模拟类很容易和函数混淆。测试
咱们通常这样作:用一个变量记住一个匿名的function当作是类,function充当了构造函数this
function test() { var teacher = new Teacher(); } var Teacher = function () { };
使用JSON语法来建立类,也就是对象直接量定义方法spa
var obj = { age: 20, str: "zhongfucheng", method:function () { alert("aaa"); } };
咱们建立公有属性应该在类中指定,建立公有方法应该使用原型对象prototypeprototype
prototype定义的属性就相似于Java的静态成员:在原型对象上定义了属性,拥有这个原型对象的function所建立的对象也拥有定义的属性!因此,咱们方法中就使用prototypecode
var obj = function Teacher(name) { this.name = name; if( typeof obj._init=="undefined") { obj.prototype.setName = function (name) { this.name = name; }; obj.prototype.getName = function () { alert(this.name); }; } obj._init = true; };
建立两个不一样的Teacher对象,name属性是不同的。而它们共享同一份setName()和getName()方法
值得注意的是:prototype定义的属性只可读的。若是你想要使用具体对象写prototype的属性,实际上并非写,而是从新为该类定义了一个同名(和prototype同名)的属性。在读取同名属性的时候,优先读取对象上的属性,而不是prototype的。
咱们在Java中,定义私有属性是经过关键字private来修饰的。。
在JavaScript中是没有这样的关键字的,咱们须要这样作:定义在方法内【也就是function内部,也能够看做成构造函数】的变量,就是私有变量。
var obj = function Teacher(name) { //这是私有属性,外界不能访问 var age = 23; //这是公有属性,外界能够访问 this.name = name; //想要访问私有变量age,只能在这里编写方法来访问。其他的地方都不行! //咱们一般就是在这里编写公有方法来访问私有属性 };
在JavaScript中定义静态属性其实就是经过prototype原型对象来定义的。
定义静态的时机:
//静态属性TYPE Book.TYPE = “IT”; Book.print = function(){alert(Book.TYPE);}