对 JS 中的面向对象的基础进行讲述, 初体验使用面向对象进行开发css
抽象性node
若是须要用一对象来描述一个数据, 那就须要抽取这个对象的核心数据来描述app
封装性函数
封装就是将数据和功能组合到一块儿this
继承性code
继承性就是本身没有, 别人有, 将别人的拿过来本身用, 而且成为本身的对象
var o1 = { name : 'Jhon' }; var o2 = { age : 19 }; function mix(o1,o2){ for(var key in o2){ o1[key] = o2[key]; } } mix(o1, o2);
var div = document.createElement('div'); documet.appendChild(div); div.style.width = '200px'; div.style.height = '200px'; div.style.backgroundColor = 'red'; div.style.border = '10px dashed blue'; ...
function DivTag(){ // 注意这里的 this 指的是 经过构造函数建立出来的实例对象 this.DOM = document.createElement('div'); appendTo : function(node){ // this是实例对象, 不是DOM节点, 不能直接使用DOM属性和方法 node.appendChild(this.DOM); }; css : function(option){ for(var key in option){ this.DOM.style[key] = option[key]; } } } var divTag = new DivTag(); divTag.appendTo(document.body); divTag.css({ width : '200px', height : 200px, backgroundColor : 'red', border : '10px dashed blue' });
可是这样也有缺点, 不能和 jQuery 同样, 不能进行链式变成, 咱们能够这样修改, 在每个方法后面加上一个return this
继承
function DivTag(){ // 注意这里的 this 指的是 经过构造函数建立出来的实例对象 this.DOM = document.createElement('div'); appendTo : function(node){ // this是实例对象, 不是DOM节点, 不能直接使用DOM属性和方法 node.appendChild(this.DOM); return this; }; css : function(option){ for(var key in option){ this.DOM.style[key] = option[key]; } return this; } } var divTag1 = new DivTag() .appendTo(document.body) .css({ width : '200px', height : 200px, backgroundColor : 'red', border : '10px dashed blue' }); var divTag2 = new DivTag() .appendTo(document.body) .css({ width : '400px', height : 400px, backgroundColor : 'pink', border : '10px dashed green' });
面向对象说白了就是对面向过程进行了封装
好比说:
需求是 一个字符串是 str = 'abcdefg'
, 找到里面的e
,并返回e
的索引索引
var str = 'abcdefg'; for(var i = 0;i < str.length;i++){ var char = str.charAt(i); if(char == 'e'){ conole.log(i); break; } }
indexOf
, 获得索引var str = 'abcdefg'; console.log(str.indexOf('e'));
用生活中吃饭的的例子就能够这样理解:开发