关键词搜索

源码搜索 ×
×

初次接触面向对象的javascript

发布2013-01-23浏览1760次

详情内容

一、对象作用域

  1. function ClassA(){
  2. var v = "我是变量 v";
  3. this.v = "我是属性 v";
  4. var me = this;
  5. ClassA.prototype.F = function(){
  6. alert("我是可供外部访问的函数");
  7. }
  8. function _F(){
  9. alert("我只是一个内部函数,外部不能访问我。");
  10. }
  11. ClassA.prototype.F2 = function(){
  12. alert(v); //OK
  13. alert(this.v); //OK
  14. _F(); //OK
  15. F(); //错
  16. this.F(); //OK
  17. }
  18. function _F2(){
  19. F(); //错
  20. this.F(); //错
  21. me.F(); //OK
  22. }
  23. }
  24. var objA = new ClassA();
  25. alert(objA.v); //显示“我是属性 v”
  26. objA.F2();
  27. objA._F2(); //系统报错,提示缺少对象

二、改写

  1. function ClassA(){
  2. var v = "我是变量 v";
  3. this.v = "我是属性 v";
  4. if (typeof ClassA._initialized == "undefined"){
  5. ClassA.prototype.F = function(){
  6. alert("我是可供外部访问的函数");
  7. }
  8. ClassA._initialized = true;
  9. }
  10. function _F(){
  11. alert("我只是一个内部函数,外部不能访问我。");
  12. }
  13. }
  14. var objA = new ClassA();
  15. objA.v = "我是属性 v,现在被重新赋值鸟";
  16. ClassA.prototype.F = function(){
  17. alert("我是可供外部访问的函数,现在被改写鸟");
  18. }
  19. alert(objA.v); //显示“我是属性 v,现在被重新赋值鸟”
  20. objA.F(); //显示"我是可供外部访问的函数,现在被改写鸟"



  1. function ClassA(){
  2. this.v = "我是属性 v";
  3. if (typeof ClassA._initialized == "undefined"){
  4. ClassA.prototype.F = function(){
  5. alert("我是可供外部访问的静态函数 F");
  6. }
  7. ClassA._initialized = true;
  8. }
  9. this.F2 = function(){
  10. alert("我是可供外部访问的函数 F2");
  11. }
  12. }
  13. var objA1 = new ClassA();
  14. var objA2 = new ClassA();
  15. ClassA.prototype.F = function(){
  16. alert("我是可供外部访问的静态函数 F,被修改鸟。");
  17. }
  18. objA1.F2 = function(){
  19. alert("我是可供外部访问的函数 F2,被 objA1 修改鸟");
  20. }
  21. objA1.F(); //我是可供外部访问的静态函数 F,被修改鸟。
  22. objA2.F(); //我是可供外部访问的静态函数 F,被修改鸟。
  23. objA1.F2(); //我是可供外部访问的函数 F2,被 objA1 修改鸟
  24. objA2.F2(); //我是可供外部访问的函数 F2

三、继承

  1. function ClassA(){
  2. this.vA = "我是 ClassA 的属性 vA";
  3. if (typeof ClassA._initialized == "undefined"){
  4. ClassA.prototype.F = function(){
  5. alert("我是 ClassA 可供外部访问的静态函数 F");
  6. }
  7. ClassA._initialized = true;
  8. }
  9. this.F2 = function(){
  10. alert("我是可供外部访问的函数 F2");
  11. }
  12. }
  13. function ClassB(){
  14. this.vB = "我是 ClassB 的属性 vB";
  15. }
  16. ClassB.prototype = new ClassA();
  17. var objA = new ClassA();
  18. var objB = new ClassB();
  19. alert(objB.vA); //我是 ClassA 的属性 vA
  20. alert(objB.vB); //我是 ClassB 的属性 vB
  21. objB.F(); //我是 ClassA 可供外部访问的静态函数 F
  22. objB.F2(); //我是可供外部访问的函数 F2
  23. ClassB.prototype.F = function(){
  24. alert("我是 ClassA 可供外部访问的静态函数 F,被 ClassB 修改鸟。");
  25. }
  26. objA.F(); //我是 ClassA 可供外部访问的静态函数 F
  27. objB.F(); //我是 ClassA 可供外部访问的静态函数 F,被 ClassB 修改鸟。



参考文章:

http://www.w3school.com.cn/js/pro_js_object_defining.asp

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载