1119-js-笔记

原型链
原型的指向是否可以改变
继承如何实现继承
原型的方式继承
借用构造函数继承
组合继承
拷贝继承

函数的不同表现方式
函数调用的不同的方式

this的指向
函数也是对象
数组中的函数如何使用

**重点**
原型链、不同的继承、原型的另一个作用、this指向要知道到底是谁
//使用对象
//构造函数 做了四件事:1.在内存中申请一块空间 2.把this作为当前实例对象 3.为属性和方法进行赋值 4.为对象做一个返回
function Person(name,age){
    //属性
    this.name=name;
    this.age=age;
    this.sayHi=function(){
        console.log("hello world!");
    };
}
People.prototype.sex="man";

var per=new Person("xiao ming",20);
per.sayHi();
per.sayHii();
//为了共享数据,节省内存空间,是可以把属性和方法通过原型的方式进行赋值
Person.prototype.sayHii=function(){
    console.log("hello world");
}
//实例对象中的__proto__原型指向的是构造函数中的原型prototype
console.log(per.__proto__==Person.prototype);
//实例对象中的__proto__是原型,浏览器使用
//构造函数中的prototype是原型,程序员使用

//原型链:是一种关系,实例对象和原型之间的关系

原型指向可以改变:
//构造函数中的this就是实例对象
//原型对象中方法的this就是实例对象
//实例对象和原型对象之前的关系是通过__proto__原型来联系起来的,这个关系就是原型链

原型最终指向的是哪里?
//per 实例对象的__proto__原型指向的是-------->Person.prototype的__proto__-------->Object.prototype.__proto__是null

原型指向改变如何添加方法: 如果原型指向改变了,在改变之后添加原型方法
 
实例对象和原型对象属性重名的问题?
实例对象访问这个属性,应该先从实例对象中找,找到了直接用,找不到就去指向的原型对象中找,找到就是用,
用过实例对象能否改变原型对象中的属性值? 不能 直接通过.prototype 改变

一个神奇的原型链:(实例对象和原型对象之间的关系,通过__proto__来联系)

继承:
面向对象的编程思想:需求--分析对象--特征、行为--构造函数创建对象,通过对象调用属性和方法来实现相应功能及需求

面向对象的特性:封装、继承、多态
封装:
1.一个值存储在一个变量中
2.一坨重复的代码放在一个函数中
3.一系列属性放在一个对象中
4.一些功能类似的函数(方法)放在一个对象中
5.好多类似的对象放在一个js文件中

继承:是一种关系,类与类之间的关系,js中通过构造函数模拟类,然后通过原型实现继承
     继承也是为了实现数据共享,js中的继承也是为了实现数据的共享
     作用1:数据共享,节省内存空间
     作用2:为了实现继承

多态:一个对象有不同的行为,或者是同一个行为的不同对象,产生不同的结果

<script>
        function Person(name,age,sex){
            this.name=name;
            this.age=age;
            this.sex=sex;
        }
        Person.prototype.eat=function(){
            console.log("eat at dinner");
        }
        function Student(score){
            this.score=score;
        }
        Student.prototype=new Person("xiaoming",20,"man");
        Student.prototype.study=function(){
            console.log("study at AM00");
        }
        var student=new Student(90);
        console.log(student.name);
        console.log(student.age);
        console.log(student.sex);
        console.log(student.score);
        student.eat();
        student.study();
        console.dir(student)
    </script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值