JS类中定义原型方法的两种实现的区别

豆豆毛与毛毛虫

豆豆毛与毛毛虫

2016-02-19 10:29

今天图老师小编给大家介绍下JS类中定义原型方法的两种实现的区别,平时喜欢JS类中定义原型方法的两种实现的区别的朋友赶紧收藏起来吧!记得点赞哦~
我们知道,给JavaScript类添加原形(prototype)方法是很简单的。而且常用的有下面这两种方法,可是这两种方法在使用时有区别吗?

    JScript Class:
 function JSClass()
 {

 }
    Extends prototype method:
 JSClass.prototype.MethodA = function()
 {

 };
    Or

 function = JSClass.prototype.MethodA()
 {

 };
其实这两个原形定义方式可以简化一下来讨论,先把它们看作是两个函数,如下: 
  Foo1(); 

  function Foo1() 
  { 
      alert(’This is Foo1.’); 
  }
     和   Foo2(); 
  var Foo2 = function() 
  { 
      alert(’This is Foo2.’); 
  }

     运行第一个显然是不会有任何错误的,可是运行第二个就有问题了,这时系统会说:Microsoft JScript runtime error: Object expected。这就是说函数定义(Foo1)在脚本解析器中有最高的初始化优先级,这个很好理解。如果不优先处理函数,那么对于函数中的函数调用就没有办法处理了,假使我们先定fn1()再定义fn2(),却从fn1中调fn2,那么就通不过解析了。为什么Foo2不能被初始化,Foo2的定义根本不是函数定义,它是一个标准的赋值语句,之所以能象标准函数一样的使用Foo2(Foo2()),完全是因为它指向的是一个函数对象的实例而已。
再来看原形方法导入里的两种方式,就很简单了。并且不同的执行优先循序,也决了它们在使用中的不同,看如下示例: 
script language="javascript"
function NormalClass() 

    this.m_Property1 = ’P1 in Normal Class.’; 
    this.m_Property2 = ’P2 in Normal Class.’; 

    this.toString = function() 
    { 
         return ’[class NormalClass]’; 
    }

    return new InnerClass();   

    function InnerClass() 
    { 
         this.m_Property1 = ’P1 in Inner Class.’;  
         this.m_Property2 = ’P2 in Inner Class.’;  

         this.toString = function() 
         { 
              return ’[class InnerClass]’; 
         }     
    }

    InnerClass.prototype.Method1 = function() 
    { 
         alert(this.m_Property1); 
    }; 

    function InnerClass.prototype.Method2() 
    { 
         alert(this.m_Property2); 
    };   
}
/script

     执行: 
var nc = new NormalClass(); 
nc.Method1(); 
nc.Method2();

     是什么效果?为什么? 
展开更多 50%)
分享

猜你喜欢

JS类中定义原型方法的两种实现的区别

Web开发
JS类中定义原型方法的两种实现的区别

JS类定义原型方法的两种实现的区别评论很多

Web开发
JS类定义原型方法的两种实现的区别评论很多

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

JS两种定义Function非常常用的方法

Web开发
JS两种定义Function非常常用的方法

正确分辨两种的区别

电脑网络
正确分辨两种的区别

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Android中button实现onclicklistener事件的两种方式

编程语言 网络编程
Android中button实现onclicklistener事件的两种方式

判断机器大小端的两种实现方法

编程语言 网络编程
判断机器大小端的两种实现方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

再谈IE中Flash控件的自动激活 ObjectWrap

再谈IE中Flash控件的自动激活 ObjectWrap

满屋旳空荡 支离破碎旳思绪 - QQ伤感分组

满屋旳空荡 支离破碎旳思绪 - QQ伤感分组
下拉加载更多内容 ↓