美文网首页
JS定义类及对象

JS定义类及对象

作者: 白屏 | 来源:发表于2017-03-09 16:32 被阅读27次

1、工厂方式

<script type="text/javascript"> 

function createObject(name){ 

       var p = new Object(); 

       p.name=name; 

       p.say = function(){alert(p.name+'ff');} 

       return p; 
} 

var p1 = createObject("p1"); 

var p2 = createObject("p2"); 

alert(p1.name+" "+p2.name); 

p1.say();p2.say(); 

alert(p1.say==p2.say); //false 

</script>

问题:每创建一个对象,对象的方法是新对象,浪费资源

2、 构造函数方式

<script type="text/javascript"> 

function Person(name){ 

this.name = name; 

this.say = function(){ 

alert("I am "+this.name); 

  } 
} 

var p1 = new Person("wang"); 

var p2 = new Person("li"); 

p1.say(); 

p2.say(); 

alert(p1.say==p2.say); //false 

</script>

问题:创建对象时比工厂方法更于理解。和工厂方法一样,每个对象都有自己的方法,浪费资源.

3、 原型方式

function Person(){}

Person.prototype.name="";

Person.prototype.say=function(){
    alert("I am"+this.name);
}

var p1=new Person();

var p2=new Person();

alert(p1.say==p2.say);//true

问题:无法在构造方法中传递参数,所有对象共享属性。

优点:对象共用方法,节约资源的。

4、 构造方法+原型方式

function Person(name){
    this.name=name;
}

Person.prototype.say=function(){
   alert("I am"+this.name);
}

var p1=new Person("wang");

var p2=new Person("li");

p1.say();

p2.say();

alert(p1.say==p2.say);//true

优点:解决了前面提到的问题

问题:封装不够完美。

5、 动态原型方式

function Person(name){
   this.name=name;

  if(Person.prototype.say==undefined){
        Person.prototype.say=function(){
        alert("I am "+this.name);
      }
   }
}

var p1=new Person("wang");

var p2=new Person("li");

p1.say();

p2.say();

alert(p1.say==p2.say);//true

结论:一种完美的解决方案。

6、 对象的创建--JSON

var person={};

var girl={

     name:"miss wang",

     age:20,

     show=function(){
          alert("my name is "+this.name);
     }
}

相关文章

  • JS定义类及对象

    1、工厂方式 问题:每创建一个对象,对象的方法是新对象,浪费资源 2、 构造函数方式 问题:创建对象时比工厂方法更...

  • 犀牛书6-对象

    js的3类对象:(1).内置对象:由ECMAScript5规范定义的对象或类,比如:数组,函数,日期,正则式等都是...

  • JS数学对象Math、日期Date

    JS对象分为三种,分别是自定义对象、内置对象及浏览器对象。 内置对象就是JS语言自带的一些对象。 一、数学对象Ma...

  • python入门开发学习笔记之类与对象

    本节重点 掌握什么是类、什么是对象 掌握如何定义及使用类与对象 了解对类与对象之间的关系 类与对象的概念 类即类别...

  • 微信小程序(wepy实战笔记)

    1. 公共对象操作 1.0 记录一 (定义公共对象,通对象key获取value) 【Js文件内容 - 公共类】 【...

  • JS Json对象与js字符串的相互转换

    json定义 json --> js对象 js对象 --> json

  • 16 类的特性[python基础]

    类及类的定义 面向对象的基础 一种类型,类的类型 类的实例称之为对象 一种用户自定义的类型 类里面有很多自定义的属...

  • 初探js面向对象

    定义 ECMAScript中没有类的概念,因此它的对象也于基于类的语言中的对象有所不同,因此js不是严格的面向对象...

  • ECMAScript 2016 Language Specifi

    4.2.1对象 尽管Js包括对类的定义语法,Js对象并不是和C++,Smalltalk,或者java一样功能上功能...

  • js对象定义

    JS中的对象定义方式,跟服务端,还是有很大差别的! 现在来说一下JS类的定义 工厂模式 function crea...

网友评论

      本文标题:JS定义类及对象

      本文链接:https://www.haomeiwen.com/subject/hutggttx.html