javascript很好很强大-->(1)javascript面象对象初探

最近买了thin老大的书.里面提到了jQuery这个脚本库.开始动了凡心.决定一窥究竟.
目标:研究jQuery源代码.

当然我们得先补习一些javascript基础.
像if{}else{} while(){} 这些c语言的东西.就不是我们讨论的重点了.

第一部份: 一个类

<script type="text/javascript">
    
function Person(name,age) {
    
this._name = name;
    
this._age = age;
    }

    
    
var p1 = new Person("小a",18);
    document.writeln(p1._name);
//小a
</script>

运行结果:小a
最明显示的特征 this与new 我们面向对象了

javascript很自由.但可别想怎样就怎样噢.会被骂的噢
下面还有几种可以达到相同的效果
1:
         var p1 = new Person;
         p1._name = "小a";
         document.writeln(p1._name);
2:
         var p1 = new Person();
         p1._name = "小a";
         document.writeln(p1._name);

3:
         var p1 = new Person("小a");
         document.writeln(p1._name);
很明显.第三种不值的推荐.会使我们产生误解

第二部份: 给类添加成员方法

<script type="text/javascript">
    
function Person(name,age) {
    
this._name = name;
    
this._age = age;
    
    
this.getName = function() {
        
return this._name;
    }

    }

    
    
var p1 = new Person("小a",18);
    document.writeln(p1.getName());
//小a
</script>

运行结果:小a

第三部份: 添加属于对象的属性 

<script type="text/javascript">
    
function Person(name,age) {
    
this._name = name;
    
this._age = age;
    }

    
    
var p1 = new Person("小a",18);
    
var p2 = new Person("小b",19);
    
    p1._height 
= 1.7;
    
    document.writeln(p1._height);
//1.7
    document.writeln(p2._height);//undefined
</script>

运行结果:1.7 undefined
属性_height只属于p1对象不属于p2对象

第四部份: 添加属于类的属性 即静态属性(通过prototype)

<script type="text/javascript">
    
function Person(name,age) {
    
this._name = name;
    
this._age = age;
    }

    
    
var p1 = new Person("小a",18);
    
var p2 = new Person("小b",19);
    
    Person.prototype._height 
= 1.7;
    
    document.writeln(p1._height);
//1.7
    document.writeln(p2._height);//1.7
    document.writeln(Person.prototype._height);//1.7
</script>

 

运行结果:1.7 1.7 1.7
prototype是原形属性,是一个内置属性,它指定了对象所扩展的构造器函数.
可以把_height看成静态属性又可以看成公有属性,不属于任何实例化的个体,而是属于类

第五部份: 添加属于类的方法 即静态方法(通过prototype)

<script type="text/javascript">
    
function Person(name,age) {
    
this._name = name;
    
this._age = age;
    }

    
    
var p1 = new Person("小a",18);
    
var p2 = new Person("小b",19);
    
    Person.prototype.getName 
= function() {
    
return this._name;
    }

    
    Person.prototype.setName 
= function(value) {
    
this._name = value;
    }


    document.writeln(p1.getName());
//小a
    document.writeln(p2.getName());//小b
    
    p1.setName(
"a");
    p2.setName(
"b");
    
    document.writeln(p1.getName());
//a
    document.writeln(p2.getName());//b
</scipt>

运行结果:小a 小b a b
这个例子很简洁的说明了问题.其实也没说明了什么,因为它太简单了.只是说明了prototype很强大






 

Tag标签: javascript,jQuery
posted @ 2008-03-29 15:28 阿鹏 阅读(87) 评论(1)  编辑 收藏 所属分类: javascript很好很强大
(1)javascript面象对象初探" trackback:ping="http://www.cnblogs.com/a-peng/services/trackbacks/1128888.aspx" /> -->

  回复  引用  查看    
#1楼 2008-06-06 08:53 | 求知无傲      
不错

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-30 18:05 编辑过


相关链接: