美文网首页
js高级知识点(第三天)

js高级知识点(第三天)

作者: js66 | 来源:发表于2019-08-04 22:23 被阅读0次

1、继承

    1.混入式继承

        for in

        使用for in 遍历1的属性,将所有的属性添加到例外一个对象上

        这时候就可以称 对象2 继承自对象1

    2.原型继承

        利用对象的动态属性,为原型对象添加成员

        直接替换原型对象

        1.替换前的对象,在替换之后,所有的成员都丢失

        2.替换原型对象的时候,需要手动去指向原型对象的constructor属性

            利用混入式给原型对象添加成员

        3.经典继承

            var 对象1 = Object.create(对象2);

            这个时候,创建出来的对象1继承自对象2

            问:Object.create方法存在兼容性?

            解决:

            1.检测浏览器是否支持Object.create方法,如果不支持,直接手动给Object添加create方法

            2.自定义函数,在函数内部判断浏览器是否支持Object.create方法,如果不支持,则手动创                  建对象返回,否则直接调用。

            javascript精粹中写道:

            function create(obj){

                    let obj = {}

                    obj.__proto__ = obj;

                    return obj;

              }

            因为 __proto__不是通用的属性(有些浏览器不一定支持)所以不推荐使用

            推荐:function create(obj){

            if(Object.create){

                    return Object.create(obj)

              }else{

            function F(){

             }

F.prototyp = obj;

return new F();

}

}

4.原型链

什么是原型链?

每个构造函数都有原型对象,每个对象都有构造函数,每个构造函数的原型对象都是对象,也就有构造函数

然后就形成一个链式的结构,我们称之为原型链

5.原型继承是什么?

通过修改原型链的结构,实现继承的方式就是原型继承。

6.对象和原型的成员关系

function Person(){}

var p = new Person();

p对象包含的成员有:Person.prototyp中的所有的成员和自身的成员。

Person.prototyp中的成员有:Object.prototyp的成员和自身的成员。

p对象可以访问Person.prototyp和Object.prototyp中的所有成员

7.Object.prototyp的成员

constructor:指向和该原型相关的构造函数

hasOwnProperty方法:判断对象本身是否拥有某个属性 p.hasOwnProperty(属性)

properIsEnumerable方法:1.判断属性是否属于本身对象,2.判断属性是否可以遍历

isPrototypeOf 方法 判断一个对象是不是另一个对象的原型对象 obj1.isPrototypeOf(obj2)

toString,tolocalString:将对象转为字符串 toLocalString转换成字符串的时候应用本地的设置格式

valueOf方法:在对象参与运算的时候,首先会调用valueOf方法获取对象的值,如果该值无法参与运算,将会调用toString方法

__proto__属性:指向对象的原型对象。

8.Function(3中创建函数的方式)

1.直接申明函数 function name(){}

2.函数表达式 var a = function(){}

3.new Function()

9.可以用Function来创建函数

var 函数名 = new Function() //创建一个空对象

var 函数名 = new Function('函数体') //创建一个没有参数的函数

var 函数名 = new Function('参数1','参数2','函数体')

反正最后一个参数为函数体,前面的参数为新参。Function接收的所有参数都为字符串类型

10.argument对象

argument对象是函数内部的一个对象,在调用函数的时候,系统会默认的将所有传入的实参存入改对象。(类数组)

注意:不管有没有形参,实参都会被传入改对象。

11.eval

可以将字符串转为js代码执行。

注意:当使用eval解析JSON格式字符串的时候,要注意,会将{}解析为代码段

1.可以在JSON格式字符串前面拼接“var 变量名 = ”

eval("var 变量名=  "+JSON格式的字符串)

2.可以在JSON格式字符 串前后拼接()

eval((JSON格式的字符串))

12.静态成员和实例成员

1.静态成员

通过构造函数去访问的属性和方法就是静态成员

2.实例成员

通过对象(实例)去访问的属性和方法就是实例成员

相关文章

  • js高级知识点(第三天)

    1、继承 1.混入式继承 for in 使用for in 遍历1的属性,将所有的属性添加到例外一个对象上 这时候就...

  • JS高级知识点

    TDZ(暂时性死区) 学习暂时性死区之前需要先了解一下var,let和const的区别(变量提升可分为创建提升和初...

  • js高级知识点(第六天)

    # js高级知识点 ## 线程 - 一个线程一次只能处理一件事情,多个线程可以多个事情同是进行。 **js中,分三...

  • JS高级知识点汇总

    1.作用域 局部作用域:函数内部就是局部作用域。 ①在局部作用域申明的变量称为局部变量,局部变量只能在当前函数内部...

  • js常见知识漏洞整理

    前言 本文主要摘录《js高级程序设计》,也就是我们常说的红宝书,其中一些比较少见的知识点,处理技巧。 知识点列表 ...

  • 程序员用javascript实力打造流星雨特效

    知识点:canvas高级绘图标签API运用,数组方法,js逻辑思维,代码性能优化等。?css代码: ?javasc...

  • css3动画高级应用开发唱吧首页图片飞入效果

    知识点: html/css布局思维,定位、浮动详解,css3动画高级应用,过渡属性解析,js应用,企业布局思维运用...

  • 最新web前端相关课程学习链接

    js基础篇 js进阶篇 js高级篇 vue基础篇 vue高级篇 react基础 react高级 Nodejs基础 ...

  • js小知识点

    js小知识点 整理 js小知识点 (一):获取元素 1:document.getElementById('id名'...

  • JS高级

    JS高级 原型 函数高级 对象高级 本地存储 cookie localStorage sessionStorage...

网友评论

      本文标题:js高级知识点(第三天)

      本文链接:https://www.haomeiwen.com/subject/igdudctx.html