原型 原型链 call apply 继承 命名空间 对象枚举

  1. 对象的原型:原型是function对象的一个属性,定义了构造函数制造出的对象的公共祖先。通过该原型构造出的构造函数,可以继承原型的属性。
    function Person(){
    }
    var person=new Person;
    Person.prototype➡原型
    Person.prototype{ };原型对象,可被构造出的对象继承
    原型和本身属性冲突的时候取自己的属性,没有该属性选择继承原型属性。
    利用原型的特点和概念,可以提取公有属性。

  2. 原型的增删改查
    通过自身不可以操作原型上的属性。只能通过prototype来操作

  3. 在原型内部自带的属性construct和__proto__
    proto:指向原型。****(重点复习一下)

  4. 原型链:Object.prototype为终端
    增删改只能通过自身来操作。
    对象字面量和构造函数相同,应用开发中,数组和对象使用对象字面量的形式。

    var obj={ };
    obj.proto=Object.prototype
    obj.constructor=Object( );
    var obj = Object.creat(原型.prototype);
    绝对多数对象的最终都继承自Object.prototype:并不是所有, Object.creat()就是例外。

    var obj = Object.creat(null);无原型,不可以自己定义原型链。

    undefined和null不可以调用toString()方法。
    数字.toString();会被识别为浮点型,报错。

    Number.prototype.proto=Object.prototype
    Number 和Object上面都有toString方法,Number重写了toString。
    类似的,Array Boolean String 上面也有重写toString。

    随机数取整:Math.floor(Math.random()*10);

    JavaScript的计算精度:前十六位,后十六位。

  5. call/apply
    call/apply:改变this指向:利用其他函数实现自己功能。
    call:需要把实参按照形参的个数传进去
    apply:需要传一个arguments

  6. 继承
    继承发展史:1.传统形式,即原型链,过多的继承了无用的属性。
    2.借用构造函数,不能继承借用构造函数的原型,每次构造都要多走一个函数。(完全囊括的情况下适用)
    3.共享原型,不能随便改变自己的原型,会改变其他函数的原型,因多个构造函数使用同一个原型。
    4.圣杯模式,function F( ) { }
    F.prototype = Father.prototype//中间层。
    Son.prototype=new F( );// new之前改原型。
    私有化变量的应用,结合闭包没搞懂,存疑。

  7. 命名空间问题
    命名空间:比较古老的方法。
    闭包:防止污染全局变量。

  8. 属性的表示方法
    obj.name等同于obj[‘name’],中括号里面必须为字符串。可以实现属性名的拼接。

  9. 枚举:遍历对象的属性值
    for in 循环中枚举的属性要写成方括号形式。
    在这里插入图片描述
    -1.hasOwnProperty(属性名)用来检查是否是自己的属性方法。
    手动设置的原型会被遍历出来,系统自带的不会被遍历出来
    -2.in 判断属性能不能被调用,原型上的也会被调用。
    -3. A instanceof B: 判断A 对象是不是B构造函数构造出来的,深层原理:看A的原型链上有没有B的原型。

  10. 区分数组和对象的三种方法
    -1. [].constructor Array {}.constructor Object
    -2. [] instanseof Array ==>true
    {} instanseof Array false
    -3. Object.prototype.toString.call( [] ) ; [object Array]
    Object.prototype.toString.call( {} ) ; [object Object]

猜你喜欢

转载自blog.csdn.net/qq_43335204/article/details/83029656