JS面向对象理解

本文介绍了JavaScript作为一种多范式编程语言的特点,特别是其面向对象编程的特性,包括抽象性、封装性和继承性的应用,并通过一个具体的div元素创建及样式的设置实例展示了面向对象的编程方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS是一个基于对象的多范式的编程语言,多范式即多种编程风格,可以使用面向过程(如C),面向对象(如C++、Java),面向函数(jQuery)等,但如果脱离了对象,JS又什么都做不了,因为JS的核心复合类型是Object(对象)和function(函数)。
在JS中所谓的对象就是键值对的集合(属性和功能)
var person = { name: 'Tom',
               age: 19,
               sayHello = function(){
                   console.log('hello');
               }
}
上述创建了一个person对象,name、age是属性,sayHello()是功能。
创建对象可以用new关键词‘var person = new person()’也可以如上述,所不同是new关键词创建的对象为person类型,而上述代码创建的为Object类型。
JS面向对象具有抽象性、封装性、继承性
抽象性:如果需要用一个对象描述一个数据,需要抽取这个对象的核心数据,而且这个数据在特定条件下才会有意义。
封装性:对象是将数据与功能组合到一起的
JS对象是键值对的集合,键值如果是数据(基本数据,复合数据,空数据)就称为属性,如果键值是函数,那么就称为方法。
对象就是将属性与方法封装起来;方法是将过程封装起来。
继承性:自己没有,但别人又,拿过来成为自己的,继承是实现复用的一种手段(重复利用或者拿过来改改成为自己的再用)。需要注意的是JS的继承性与C++、Java等的继承性不同。在C++等语言中继承满足一个模板规则,类是模板,它规定了一个对象应该有什么属性和什么方法,在这些语言中继承是模板之间的基础,一个模板继承另一个模板,那么该模板就有了另一个模板的成员,那么由该模板创建出来的对象就同时具有两个模板的成员。
JS没有明确的继承语法,一般都是按照继承的理念实现对象的成员扩充来实现继承,因此JS中实现继承的方法特别多。其中一个最简单的办法,叫混入(mix)。
function mix( o1, o2){
    for(var k in o1){
        o2[ k ] = o1[ k ];
    }
}

使用对象进行编程过程:首先找对象;然后将任何操作交给对象完成。
代码任务:创建一个div,将他加到body里,再对其添加样式。
如果是一般的处理方法:

    var div = document.createElement('div');
    document.body.appendChild(div);
    div.style.border = '1px dashed red';
    div.style.width = '400px';
    div.style.height = '300px';

面向对象的方式去思考:
1、抽取对象(名称提炼):div,body
2、分析属性与方法(动词提炼):加到,设置样式
最终代码:

function DivTag(){
        this.DOM = document.createElement('div');
        this.appendTo = function( ele ){
            ele.appendChild( this.DOM );
            return this;
        }
        this.css = function( option ){
            for( k in option ){
                this.DOM.style[ k ] = option[ k ];
            }
            return this;
        }
    }
    //调用方法
    var divTag = new DivTag();
    divTag.appendTo(document.body).css({
        border: '1px solid red',
        width: '300px',
        height: '200px'
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值