这是创建一个原型为null的空对象
类的属性除非是显式定义在其本身上(即this对象上),否则都定义在原型上。eat,sayName这两个方法是实例都可以调用,区别就是sayName在实例的prototype上
javascript是一个“基于对象”的编程语言,不是面向对象的编程语言。\x0d\x0a你要知道javascript中的function定义的函数实际上就是Function对象实例。\x0d\x0a例如:\x0d\x0afunction demo(x){\x0d\x0aalert(x)\x0d\x0a}\x0d\x0a实际上等价于:\x0d\x0aFunction demo = new Function("x","alert(x)")\x0d\x0a所以你如果想要用javascript来模拟面向对象编程(例如Java的类),那么就可以用function来模拟Class,用function的原型prototype或者嵌套function来模拟类的方法或者属性。下面给你一个简单的例子:\x0d\x0a//模拟学生类,可以带参数,例如initName\x0d\x0afunction Student(initName){\x0d\x0avar name = initName//模拟学生类的属性name\x0d\x0a}\x0d\x0aStudent.prototype.printName = function(){ //定义Student类prototype中的printName函数\x0d\x0aalert(this.name)\x0d\x0a}\x0d\x0a\x0d\x0a测试时可以这样写:\x0d\x0avar student = new Student("张三")//创建一个“Student对象”,实际上是一个Function实例对象\x0d\x0astudent.printName() //执行student对象的printName函数推荐有一下几种方式:1.对象字面量创建对象
var obj = { a:1,b:2 }
注意:对象字面量是一个表达式,这种表达式每次运算都会创建并初始化一个新对象,并计算这个新对象的每个属性值。所以如果在循环体内使用对象字面量,每次循环时都会创建新对象。
2.通过new运算符创建对象
var obj = new Object()//创建空对象 var ary = new Array()//创建空的数组对象
注意:new运算符后面跟的是一个函数调用,这个函数被称为构造函数。js中原始类型都包含内置的构造函数,也可以自己定义构造函数。
3.通过立即执行函数创建对象
var obj = (function(){ return {x:1,y:2}}())
注意:在立即执行函数内部一定要有return语句,return出的内容就是待创建的对象。