oop面向对象编程

oop全称是:Obeject Oriented Programming

1.构造函数和普通的函数之间的区别在于他的函数名首字母要大写,构造函数也叫类。

2.对象也叫实例。

3.由类=》对象的过程叫实例化。

4.实例方法有constructor和instanceof。

对象名.constructor返回的结果是一个类;而对象名  instanceof  类则是判断该对象是否属于这个类。

5.静态属性和方法也叫类属性和类方法,只能由类本身来调用。

6.私有属性,只能在函数体内用,相当于局部变量。

/* 封装 */
function Person1(){
console.log("你的函数被调用了");
}
var zhangsan = new Person;//实例化 会调用构造函数
zhangsan.name = "zhangsan";//实例属性
//实例方法
zhangsan.say = function (){
console.log("hello")
};

/* 构造函数 */
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
/* 实例化 */
var zhangSan = new Person("张三",20,"男");
var liSi = new Person("李四",23,"男");
var xiaoFang = new Person("小芳",22,"女");
/* 实例方法 */
console.log(zhangSan.constructor);//返回对象的构造函数
console.log(liSi instanceof Person);//判断对象是否是某个类的实例
Animal.age = 10;
/* 静态方法(类方法)*/
Animal.move = function (){
console.log("移动");
};
/* 实例化对象 */
var cat = new Animal;
Animal.move();

/* 私有属性 */
function Human(name){
this.name = name;
var age = 100;//私有属性,只能咋函数体内用
this.getAge = function(){
if(this.name == "zhangsan2"){
return age;
}
}
}
var zhangsan2 = new Human("zhangsan2");
console.log(zhangsan2.name);
console.log(zhangsan2.getAge());
//console.log(zhangsan2.age);//无法调用私有属性

var lisi2 = new Human("lisi2");
console.log(lisi2.name);
console.log(lisi2.getAge());
//console.log(lisi2.age);//无法调用私有属性

/* 作用域链 变量提升 */
//1
var data = 10;
function fun1(){
var data = 100;
}
fun1();
console.log(data);//data = 10


//2
function fun2(){
data = 100;
}
fun2();
console.log(data);//data = 100


//3
function fun3(){
data = 100;
fun4();
function fun4(){
data = 1000;
fun5();
function fun5(){
data = 10000;
}
}
}
fun3();
console.log(data);//data = 10000
posted @ 2017-03-15 18:01  VictoriaChen  阅读(203)  评论(0编辑  收藏  举报