【滑稽】每日一记 JS 面向对象基础

OOP(面向对象编程)基础
语言的分类:
1、面向机器:汇编语言
2、面向过程:C语言
3、面向对象:java、C++、PHP等
面向过程与面向对象区别:
面向过程:专注于如何去解决一个问题的过程,编程特点是用一个个函数去实现过程操作,没有类与对象的概念
面向对象:专注于由哪一个对象实体去解决这个问题,编程特点是出现了类,由类生成对象
面向对象的三大特征:继承、封装、多态


【类和对象的关系】:
一、类:一群有相同特征(属性)和行为(方法)的集合 ;
二、对象 :从类中,拿出的具有确定属性值和方法(行为)的个体
三、类和对象的关系:类是对象的抽象化,对象是类的具体化;类是抽象的,对象是具体的
通俗来说: 类是一个抽象概念,表示具有相同属性和行为的集合,但是类仅仅表明这类群体具有相同的属性,
但是没有具体的属性值,而对象是对类的属性进行具体赋值后,而得到的一个具体的个体

四、使用类和对象的步骤:
1、创建一个类(构造函数),类名必须每个单词的首字母大写
function 类名(属性1){
this.属性 = 属性1;
this.方法 = function(){};
this 指向即将调用当前构造函数的对象
}
2、同过类实例化出一个新的对象:(实例化对象时会执行构造函数)
var obj = new 类名(属性1value);
原构造函数中this指向新创建的obj对象
obj.方法(); 调用方法
obj.属性(); 调用属性

五、两个重要的属性:
1、constructor:返回当前对象的构造函数,(只有对象才有,返回的是构造函数-类)
zhangsan.constructor == Person true
对象的constructor,位于__proto__原型对象上
2、instanceof

六、广义对象和侠义对象:
狭义对象:只有属性、方法,除此之外没有任何东西
var obj = {}; var obj = new Object();
广义对象:除了用字面量声明的基本数据类型之外,换句话说,能够添加属性与方法的变量,就是对象
var s = "1"; 不是对象   var s = new String("1"); 是对象

 

【成员属性与成员方法】
在构造函数中,通过"this.属性"声明,或者实例化出对象后,通过"对象.属性"追加的,都属于成员属性或成员方法
成员属性/方法,是属于实例化出的这个对象,通过"对象.属性"调用
【静态属性与静态方法】
通过"类名.属性名","类名.方法名"声明的变量,称为静态属性、静态方法,也叫类属性、类方法
成员属性是属于实例化出的对象的,会出现在新对象的属性上,

类属性是属于构造函数自己的,不会出现在新对象属性上
4、JS对象属性的删除:
对象无需手动删除,JS提供了一种主动释放对象内存的方法(即对象无用后,自动删除)
删除对象的属性:delete 对象名.属性名

5、对象是引用数据类型
也就是说,当new出一个对象时,这个obj变量存储的实际上是对象的地址,在对象赋值时,赋的也是地址。
function Person(){}
var zhangsan = new Person(); //zhangsan对象实际存的是地址
var lisi = zhangsan; //赋值时,实际是将zhangsan存的地址给了lisi
lisi.name = "李四"; //李四通过地址修改了对象
console.log(zhangsan.name); //张三再通过地址打开对象,实际已经改变了
引用数据类型,赋值时传递的是引用(地址);基本数据类型,赋值时传递的是数据(值)


 


 

posted @ 2017-05-09 16:51  瓜皮猴  阅读(103)  评论(0)    收藏  举报