源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript中万恶的function实例分析

  • 时间:2021-04-25 05:56 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript中万恶的function实例分析
javascript中最有特色而又让你困惑的function算一个了 下面看一下常用操作
[u]复制代码[/u] 代码如下:
function doit(){   ..... }   doit();
javascript中的函数我们可以把它当作方法使用
[u]复制代码[/u] 代码如下:
  var obj=new Object();   obj.say=function(){   .....   }   obj.say();
而function实际上就是对象(即Function类型的实例)
[u]复制代码[/u] 代码如下:
function result(num1, num2) { return num1 + num2; }
  var result = new Function("num1", "num2", "return num1+num2"); 以上执行效果是一样的,同时function result还可以这样写(即函数表达式)
[u]复制代码[/u] 代码如下:
var result=function(num1,num2){ return num1+num2; }
这俩种写法的唯一区别是function是优先执行,而函数表达式是代码执行到才执行,另外每个函数内部都有一个类似数组的arguments对象 函数执行动态参数,即
[u]复制代码[/u] 代码如下:
function result(){ return arguments[0]+arguments[1]; } result(1,2);
arguments在动态传递参数方面经常使用 既然说function是对象,那么它应该也具体属性
[u]复制代码[/u] 代码如下:
function person(){ .... } person.name="xxxx"; person.say=function(){ alert(this.name); } person.say(); //alert("xxxx")
我们还可以把它当成类,而函数体相当于构造函数
[u]复制代码[/u] 代码如下:
function Person(nm){ this.name=nm; this.say=function(){ alert(nm); alert(this.name); } } var p1=new Person("ygm1"); p1.say(); //alert ygm1 ygm1 var p2=new Person("ygm2"); p2.say(); //alert ygm2 ygm2
注意这里要用this.name 因为this代表的是当前对象,如果直接alert(name) 求的是window对象的属性,同时传进来的参数nm在方法say中可以直接用,其实这涉及到作用域链,每个function体就是一个作用域,子域可以访问到父域的属性,而反过来却不行(其实也是可以取到的,设计到闭包一些知识,这里不做详解..) 与其他一些OO语言相比,每个类都可以有一些静态属性或方法,而javascript通过原型来模拟以达到每个对象共享其属性
[u]复制代码[/u] 代码如下:
function Person(num) { ..... } Person.prototype.name = "ygm"; alert(new Person().name);
但OO语言的静态方法都是由类去调用,不能实例化本身的,javascript中由于其特殊性恰好相反 注意这里alertPerson的name属性,如果函数体内没有查找到name则会到原型中去找,如果查找到则会屏蔽原型中的name直接返回其值 其实每创建一个function的同时也创建了一个原型对象,而原型对象引用自object,所以object是所有对象的基类 我们可以重写原型对象 Person.prototype=new ParentPerson(); Person的原型对象指向ParentPerson对象,而ParentPerson对象又指向自己的原型对象...,也就形成了原型链... 好了 今天就写到这里...
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部