JavaScript 构造函数

JavaScript 构造函数
2011年08月19日
  JavaScript里虽然没有类这个概念,但是可以通过定义伪类即构造函数和原型对象prototype来实现。
  一、构造函数说明
  JavaScript新建一个对象可以通过new关键字来实现
  var obj=new Object();
  这个前提是必须首先定义了这个函数,才可以对其new一个新对象。JavaScript里本身已经有一些对象可以使用了,所
  以我们在自定义一个对象的时候要首先知道JavaScript有哪些对象是可以直接使用的,避免重复出错。
  JavaScript里有三种类型的对象:本地对象,内置对象,宿主对象,关于这三个类型的对象的详细参见 这里 。不过我
  这里还是说明一下。
  (1)本地对象
  ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说,本
  地对象就是 ECMA-262 定义的类(引用类型)。它们包括:(图片是借用的不过忘记出处了)
  Object Function Array String Boolean Number Date RegExp Error EvalError
  RangeError ReferenceError SyntaxError TypeError URIError
  (2)内置对象
  ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,
  在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。
  ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都
  是本地对象)。
  (3)宿主对象
  所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。所有 BOM
  和 DOM 对象都是宿主对象。也就是说宿主对象包括内置对象以及自定义的对象。
  知道了JavaScript中的对象类型后我们就可以构建对象了。对于本地对象我们需要实例化再使用,内置对象可以直接
  使用,因为其本身就已经实例化了,对于宿主对象是重点,因为我们首先要定义(即构造函数)这个对象,这个就是
  这篇文章的重点了。
  (二)构造函数使用
  JavaScript中构造函数这个词儿似乎挺玄妙的,用的最多的其实就是创建一个function对象。
  var obj=new fun1();
  obj.show(); //obj.show is not a function
  obj.show1(); //我是周阿里!
  obj.show2(); //我是周阿里哈哈!
  obj.show3(); //我是周阿里嘿嘿!
  alert( obj.hobby );//undefined
  obj.show4(); //obj.show4 is not a function
  fun1.prototype.show=function(){ alert("周阿里!"); }
  fun1.prototype.hobby="K歌";
  function fun1(){
  this.name="周阿里";
  this.gender="女";
  this.show1=function(){ //此方法可以通过fun1的实例调用
  alert("我是周阿里!");
  }
  function show2(){ //此方法不可以通过fun1的实例调用,这能在fun1内部使用
  alert("我是周阿里哈哈!");
  }
  fun1.prototype.show3=function(){
  alert("我是周阿里呵呵!");
  }
  }
  obj.show4(); //obj.show4 is not a function
  fun1.prototype.show4=function(){ alert("我是周阿里嘿嘿!"); }
  obj.show4(); //我是周阿里嘿嘿!
  obj.show2();// obj.show2 is not a function 从这个例子中可以很容易的看出如下的结论:
  (1)通过new创建一个对象的实例会首先执行它的构造函数,并且不存在new对象在构造函数前还是后的顺序,
  放在什么地方都是一样的。
  (2)在构造函数外使用prototype添加的方法或者属性的调用必须在申明之后,否则会报错:xx is not a function
  或者返回为undefined ,如上面黄条部分所示效果
  (3)构造函数中如果不通过this来指定的话,就只能在该函数内部使用,外部无法调用,上例绿条所示
  类别:javascript专栏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值