创建对象的基本模式,一、门户大开型,二、采用下划线来表示属性和方法的私用性,三、使用闭包来创建私用的成员。
一、门户大开型。只能提供公用成员。所有属性和方法都公开的、可访问的。这些共用属性都要使用this关键字来创建。
<script type="text/javascript"> ////定义Dog对象 var Dog = function (name, age) { this.name = name; this.age = age; } Dog.prototype.SayHello = function () { ///弹出消息 alert(this.name+this.age) } ////实例化对象 var dog = new Dog("Auto", 3) ////打招呼 dog.SayHello(); </script>
二,采用下划线来表示属性和方法的私用性。
<script type="text/javascript"> ////定义Dog对象 var Dog = function (name, age) { this.setName(name); this.setAge(age); } Dog.prototype = { setName: function (name) { this._name= name; }, getName:function(){ return this._name; }, setAge:function(age){ this._age=age; }, getAge:function(){ return this._age; }, SayHello:function () { ///弹出消息 alert(this._name+this._age) } } ////实例化对象 var dog = new Dog("Auto", 3) ////打招呼 dog.SayHello(); dog.setName("cc") alert(dog.getName()) alert(dog.getAge()) </script>
三、使用闭包来创建私用的成员。在Javascript中,函数具有作用域,也就是说, 在一个函数内部声明的变量在函数外部是无法访问的。定义一个函数中的变量在该函数的内嵌函数中是可以访问的。
<script type="text/javascript"> ////定义Dog对象 var Dog = function (name, age) { var name, age; this.setName = function (name) { name = name; }; this.setAge = function (age) { age = age; }; this.getName = function () { return name; }; this.getAge = function () { return age; }; }; ////实例化对象 var dog = new Dog("Auto", 3) alert(dog.getName()) alert(dog.getAge()) </script>
本文源于:Javascript设计模式。