// 九、对象的封装
// *(如果是构造函数,第一个字母大写,不是规定)*//
// 1、工厂函数(创造对象,但是属性是后期自己加)
// function person(name,age,fun){
// var obj = {};
// obj.name1 = name;
// obj.age1= age ;
// obj.say1 = fun;
// return obj;
// }
// var zs = person("zhangsan",18,say);
//注意工厂函数这里不用new,因为工厂函数直接返回一个对象,就不需要再实例化一个对象了。
// function say(){
// alert("说话");
// }
// alert(zs.say1);
// alert(zs.say1());
// 2.构造函数封装
// 这两个都不建议使用,浪费内存
// 3.prototype原型,原型也是一个对象
// 原型对象放代码块,公用的,静态区放的是全局的东西
// 问题:没有个性化的东西。第4种最常用
// function person(){
// }
// person.prototype.say=function(){
// alert("shuohua")
// }
// var zs=new person();
// var ls=new person();
// zs.say();
// ls.say();
// 4.混合模式
// function person(name,age){
// this.name=name;
// this.age=age;
// this.smile=function(){
// alert("哈哈")
// }
// }
// person.prototype.say=function(){
// alert("shuohua");
// }
// var zs=new person("zs",12);
// var ls=new person("ls",45);
// console.log(zs.say);
// console.log(ls);
//十。 对象的特性 继承
// 1)原型 原型也是一个对象 共有,不可改变有局限性,所以有了冒充,有了call
// function person(){
// this.say=function(){
// alert("say")
// }
// }
// function student(){
// this.name="student";
// }
// student.prototype=new person();
// var zs=new student();
// console.log(zs.say);
// 2)call() 对象冒充
// 3)apply对象冒充,和call几乎一样,区别在于
// 对象1.方法.apply(对象2,[参数1,参数2...])
// 对象1.方法.call(对象2,参数1,参数2...)
// function person(name){
// this.name=name;
// this.say=function(n,m){
// alert([n,m]);
//注意这里必须得是数组的形式。要不只能弹出一个 。
alert(this.name)
// }
// }
// function student(name){
// this.name=name;
// }
// var zs=new person("zhangsan")
// zs.say(2)
// var xzs=new student("xiaozhangsan")
// zs.say.call(xzs,6,9)
// zs.say.apply(xzs,[6,9])
// console.log(xzs)
// 11.object是所有对象的父类
// var obj=new Object()
// console.log(obj)
// 属性名
// 1.constructor 获取该对象的构造函数
// console.log(obj.constructor)
// 2.prototype
// 3.instanceof
// console.log(obj instanceof Object)
// 判断是否是该函数的原型链上的
// 十二、继承的顺序
// function person(){
// this.say=function(){
// alert("person上的方法")
// }
// }
// student.prototype=new person();
// function student(){
// this.say=function(){
// alert("student上的方法");
// }
// }
// var stu=new student();
// console.log(stu.say())
继承的几种方式:
es5 : 上面写的原型继承,call 继承,apply 继承
es6 :class 继承