没想到啊

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  6 随笔 :: 379 文章 :: 97 评论 :: 24万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

神马是对象??

 客观世界中,万物皆为对象;

对象就是一MM,她有她独特的性格以及行为。所以对象=属性+行为。

var Person = {
    age: 0,
    name: 'MM',
    say: function(){
        alert(this.name + ': 你妈喊你吃饭!');
    }
};

神马是面向对象???

吃这行饭的人都知道,面向对象它是一种思维方式,而不是一种工具。到目前为止不管是多NB的人也没有给出一个确切的定义,因为它本来就没有一个标准,得靠大家在工作中去体会。

个人认为面向对象就是先使用抽取事物的共性,分离其特性的手法,然后再使用封装、继承、多态等设计方法整合各模块,以达到客户要求,就是面向对象。

js虽然不是面向对象的语言,但他依然可以使用面向对象的思想来编程。

 

命名空间

在开发的后期,命名空间是必不可少的,它可以解决几乎所有的命冲突。

在function 未使用var声明的变量为全局变量,全局变量为window对象下的属性,一般情况下,尽量不要使用全局变量,全局变量是魔鬼,它随时会让你奔溃。

this关键字永远都指向函数的所有者

复制代码
var Space = function(){
    this.i=10;//Space 的i
    i = 300;//window 的i
    this.fn = function(){
        var i=20;//fn函数的i
    }
};
var space = new Space();
alert('space I: ' + space.i);
alert('window I: ' + window.i);
复制代码

是面向对象的基本要素,它是具有相同属性和服务的一组对象的组合,是对事物抽象出来的结果。

一般来说,一个类包含有属性,方法,如下

复制代码
var Person = function(){
    this.firstName = '';        //属性
    this.lastName = '';        //属性
    this.address = '';        //属性
    this.birthDate = '';        //属性
    this.age = 0;            //属性
    this.phone = '';        //属性
    this.say = function(){        //方法
        alert(this.firstName + ': 你妈喊你吃饭!');
    };
};
复制代码

类的继承:

如果B类继承A类,那么B类拥有A类的属性以及方法,而且还可以扩展自己的属性和方法。

下面新建一个User类,它继承Person类。

复制代码
var User = function(){
    this.money = 100;        //扩展User属性
    this.buy = function()        //扩展User方法
    {
        alert(this.firstName + ': 购买一条老底,共' + this.money + '元。' );    
    };
};
User.prototype = new Person();        //原行继承方式Person对象做为User的原型。

var user = new User();
user.firstName = 'Lang';
user.buy();
复制代码

类的多态

多态是子类再继承父类的时候,重新实现父类的某个方法,重载的时候,方法名必须相同,参数可不同。

下面还是以User类为例,重载父类的say()方法。

复制代码
var User = function(){
    this.money = 100;        //扩展User属性
    this.buy = function()    //扩展User方法
    {
        alert(this.firstName + ': 购买一条老底,共' + this.money + '元。' );    
    };
    this.say = function(str)//重载父类的say方法
    {
        alert(this.firstName + ': 这老底太贵了。 哥穿不起!' + str);
    }
};
User.prototype = new Person();    //原行继承方式Person对象做为User的原型。

var user = new User();
user.firstName = 'Lang';
user.buy();
user.say('不穿算了!');
复制代码

那么在重载父类的方法时,如何实现像Java 跟AS3.0一样的super()方法呢?

复制代码
var User = function(){
    this.money = 100;        //扩展User属性
    this.buy = function()    //扩展User方法
    {
        alert(this.firstName + ': 购买一条老底,共' + this.money + '元。' );    
    };
    this.super = this.say;//将父类的say()方法赋值给super属性;
    this.say = function(str)//重载父类的say方法
    {
        this.super();//在这里调用上面刚刚赋值的super()方法,这里调用就像调用父类的say()方法一样。很过瘾哦!
        alert(this.firstName + ': 这老底太贵了。 哥穿不起!' + str);
    }
};
User.prototype = new Person();    //原行继承方式Person对象做为User的原型。

var user = new User();
user.firstName = 'Lang';
user.buy();
user.say('不穿算了!');//这次,这里将会有两个输出
复制代码

转自:http://bibei1234.iteye.com/blog/1661726

 

posted on   没想到啊  阅读(110)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示