创建类和对象的方式

1、简单方式
        
Js代码 
var people ={}; 
Js代码 
      people.name = "steven"; 
      people.age = 23; 
      people.getName = function(){ 
           return "People‘s name is "+ this.name; 
     }; 
console.log(people.getName());          //People‘s name is steven 
console.log(people.age);                    //23 
Js代码 
不好的地方就是:在创建多个对象的场景下会产生 很多冗余的代码,耦合度不高

2、工厂模式下

Js代码 
function makePeople(name,age,job){ 
     var _obj = {}; 
     _obj.name = name; 
     _obj.age =age; 
     _obj.job = job; 
    _obj.getName = function(){ 
        return "People‘s name is "+ this.name; 
   }  
    return _obj; 

 
var webdesigner = makePeople("steven",23,"wendesigner"); 
console.log(webdesigner.getName );       //People‘s name is steven 
console.log(webdesigner.job)                //wendesigner 
 

Js代码 
不好的地方就是:实例化比较频繁

3、原型模式(prototype)下
Js代码 
function People(){}; 
People.prototype = { 
       constructor :People, 
       name:"steven", 
       age:23, 
       job:"webdesigner", 
       getName:function(){ 
             return "People‘s name is "+this.name; 
      } 

 
var webdesign = new People(); 
var carman = new People(); 
console.log(webdesign.getName());    //People‘s name is steven 
console.log(carman.getName());    //People‘s name is steven 
 
Js代码 
不好的地方就是:初始化参数不支持传递,还有就是原型的所有属性和方法会被所有的实例共享

4、混合模式(原型+构造函数)下

function People(name.age.job){ 
Js代码 
this.name = name; 
Js代码 
       this.age = age; 
       this.job = job; 
}; 
People.prototype = { 
      constructor:People, 
      getName: function(){ 
           return "People‘s name is "+this.name; 
      } 

 
var webdesigner  = new People("steven",23,"webdesigner"); 
var carman = new People("zyc",24,"carman"); 
console.log(webdesigner.getName())   //People‘s name is steven 
console.log(carman.getName())   //People‘s name is zyc 
 
Js代码 
不好的地方就是:对象的属性和方法也多是公用的

5、闭包下的私有变量模式

Java代码 
(function(){ 
    var name =""; 
    People = function(val){ 
        name = val; 
   }; 
    People.prototype ={ 
       constructor:People, 
       getName:function(){ 
              return "People‘s name is "+ name ; 
      } 
   }; 
})();

var webdesigner = new People("steven"); 
console.log(webdesigner.name);           //undefined 
console.log(webdesigner.getName());      //People‘s name is steven 
 
var carman= new People("zyc"); 
console.log(carman.name);           //undefined 
console.log(carman.getName());      //People‘s name is zyc

Js代码 
不好的地方就是:初级程度代码不是很让人理解

时间: 2024-10-08 03:20:20

创建类和对象的方式的相关文章

Javascript创建类和对象

现总结一下Javascript创建类和对象的几种方法: 1.原始的创建方法: 1 <script type="text/javascript"> 2 var person = new Object(); 3 person.name="Amy"; 4 person.sex="Woman"; 5 person.show=function(){ 6 document.write("name is: "+this.name

Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)

概念:                                                                                                                                                     ·        面向过程:根据业务逻辑从上到下写垒代码 ·        函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 ·        面向对象:对函数进行分类和封装,

JS创建类和对象

JavaScript 创建类/对象的几种方式 非常好的一篇讲类和对象的文章,逐一测试,加深记忆:http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组

利用反射机制创建类的对象

第一步:创建要反射的类的字节码文件对象,其实就是创建了Class类的对象(一共有三种方法) 方式一:通过对对象获取字节码文件对象 例如:Person p = new Person(); Class c1 = p.getclass(); //Object类中的方法:public final Class<?> getClass()返回此 Object 的运行时类. 方式二:任意数据类型都具备一个class静态属性. Class c2 = Person.class; 方式三:调用Class类中的静态

JS创建类和对象(好多方法哟!)

http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 这是别人写的~~~我借来看看 JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像

JS创建类和对象,看完了,头就不大了

JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表.字典.健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象. 一.由一对大括号括起来 var

创建类的对象

创建对象类型 assign:用于非指针变量,用于基础数据类型(例如NSInteger)和C数据类 型(int, float,double,char,等)另外还有id 如: @property(nonatomic,assign) int number @property (nonatomic,assign) id className;id必须用assign 反正记住:前面不需要加*的就用assign吧 strong与weak是由ARC新引入的对象变量属性 xcode 4.2(iOS sdk4.3和

JAVA:创建类和对象

package duixiang; public class duixiang { /* * 类的实例化:创建对象 */ public static void main(String[] args) { //使用类:创建对象 //语法:数据类型(类名) 对象名 =new 构造方法; Person person = new Person(); //类的属性要通过对象进行取值 //对象的使用: . 对象名.属性名 对象名.方法名 //调用属性 person.name = "张三"; per

创建类对象并获取类的完整结构

创建类的对象:条用Class对象的newInstance方法 1.类必须有一个无参构造器 2.类的构造器的访问权限需要足够. 没有无参构造器也能创建: 1.通过Class类的getDeclaredConstructor取得本类的指定形参类型的构造器 2.向构造器的形参中传递一个对象数组进去,里面包含了构造器中所需要的各个参数 3.在Constructor类中存在一个方法public newInstance 运行时类调用的空参构造器