您的位置:首页 > Web前端 > JavaScript

JS中的prototype属性------阿冬专栏!!!

2016-01-12 11:42 651 查看
今天在学医JsSIP源代码的过程中,会涉及到一些JavaScript相关的零碎知识,之前没有学习过JavaScript,在这里记录一些学习过程中的零碎知识的学习。

1、学习中遇到prototype,收集资料,一位高人写得好文章关于prototype,个人认为他讲得很精辟了。

留作纪念,把地址留下,跟大家分享分享

地址:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html

1 原型法设计模式

在.Net中可以使用clone()来实现原型法

原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。

 

2 javascript的方法可以分为三类:

a 类方法

b 对象方法

c 原型方法

function People(name)

{

  this.name=name;

  //对象方法

  this.Introduce=function(){

    alert("My name is "+this.name);

  }

}

//类方法

People.Run=function(){

  alert("I can run");

}

//原型方法

People.prototype.IntroduceChinese=function(){

  alert("我的名字是"+this.name);

}

//测试

var p1=new People("Windking");

p1.Introduce();

People.Run();

p1.IntroduceChinese();

prototype是什么含义?

 

javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。

A.prototype = new B();

理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。

先看一个实验的例子:

function baseClass()

{

  this.showMsg = function()

  {

     alert("baseClass::showMsg");   

  }

}

function extendClass()

{

}

extendClass.prototype = new baseClass();

var instance = new extendClass();

instance.showMsg(); // 显示baseClass::showMsg

………………………………

………………………………

具体的见链接内容……………………

2, 


caller和callee的区别

http://blog.csdn.net/laijieyao/article/details/43404953

先看看字面意思:caller---召唤者;callee----被召唤者,,,从字面意思就能略有理解。

caller返回一个函数的引用,这个函数调用了当前的函数;callee放回正在执行的函数本身的引用,它是arguments的一个属性

caller

caller返回一个函数的引用,这个函数调用了当前的函数。

使用这个属性要注意:

1 这个属性只有当函数在执行时才有用

2 如果在javascript程序中,函数是由顶层调用的,则返回null

functionName.caller: functionName是当前正在执行的函数。
var a = function() { 

alert(a.caller); 



var b = function() { 

a(); 



b();

上面的代码中,b调用了a,那么a.caller返回的是b的引用,结果如下:

var b = function() { 

a(); 



如果直接调用a(即a在任何函数中被调用,也就是顶层调用),返回null:

var a = function() { 

alert(a.caller); 



var b = function() { 

a(); 



//b(); 

a();

输出结果:

null

callee

callee放回正在执行的函数本身的引用,它是arguments的一个属性

使用callee时要注意:

1 这个属性只有在函数执行时才有效

2 它有一个length属性,可以用来获得形参的个数,因此可以用来比较形参和实参个数是否一致,即比较arguments.length是否等于arguments.callee.length

3 它可以用来递归匿名函数。

var a = function() { 

alert(arguments.callee); 



var b = function() { 

a(); 



b();

a在b中被调用,但是它返回了a本身的引用,结果如下:

var
a = function() { 

alert(arguments.callee); 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JavaScript