zj-js

一,经常看的网站

    CSDN , MDN  ,掘金 ,  ,语雀

六,.typeof 运算符:

    (2) 引用类型:Array Object,或 Null 类型,返回object

    typeof 函数地址 ,返回function

九,  关键字:instanceof  判断实例对象 (d instanceof da;//判断d是不是da的实例对象)

十。  isNaN(值) 判断非数值

9.运算符:

    (5)条件运算符:var iMax = (iNum1 > iNum2) ? iNum1 : iNum2;

10.运算符优先级:小括号>算术运算符>比较运算符>逻辑运算符>赋值运算符

十一, 异步加载关键字  : async  defer

       


防抖和节流:debounce和throttle

    应用:响应跟不上触发频率这类问题的两种解决方案

Jquery:

    $.each(数组或对象 ,i,val) 遍历数组和对象

    $().each() 遍历元素

    $().toggleClass('hidden')  切换状态

闭包: (closure)

    概念:有权访问另一个函数(父函数)作用域中的变量的函数

    优点:避免全局变量的污染,局部变量不被销毁。

    缺点:使用不当会造成内存泄漏

    function aaa() {

        var a = 1;

        return function(){

            alert(a++);

        };

    } 

    a = 8;

    var fun = aaa();

        fun();

        fun();

        fun = null;

    闭包有三个特性:

        1、函数嵌套函数

        2、子函数内部可以引用外部父函数的参数和变量

        3、参数和变量不会被垃圾回收机制回收

构造函数:

    经历的步骤:

        (1 )创建一个新的空对象

        (2)将构造函数的作用域赋值给这个对象(因此this就指向了这个对象)

        (3)执行构造函数中的代码(即给新对象添加属性和方法的过程)

        (4)返回对象

原型对象prototype:

    1、每一个构造函数都自动有一个属性叫做原型(prototype)。

    2、这个属性是指向一个对象的引用,这个对象称作“原型对象”(

        初始化时只有constructor属性和_proto_属性)。

    3、当通过new来生成一个类的对象时,新创建的对象会从原型对象上继承属性和方法

    4、原型对象为一个特定的类 声明通用(也就是被实例对象共享)的变量或者函数。

    5、原型对象有一个属性: constructor, 指向创建该原型对象的构造函数的父类的构造函数。

实例化对象的_proto_属性:

    每一个构造函数都自动有一个原型对象,当通过new来生成一个类(构造函数)

        的实例化对象的同时,新创建的对象会从原型对象上继承属性和方法。

      原型对象的作用是实现继承。

    如何继承?

        1、JS在创建对象的时候,都有一个叫做__proto__的内置属性

        ,用于指向创建它的函数对象(构造函数)的原型对象prototype

        2、当我们访问一个对象的属性 时,如果这个对象内部不存在这个属性

        ,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的__proto__,

        于是就这样 一直找下去,也就是我们平时所说的原型链的概念。

        3、其实prototype在实现原型链中只是起到了一个辅助作用,而原型链的本质

        ,其实在于__proto__!

原型链总结:

    原型链:每个实例化对象都具有一个原型链指针_proto_,

    该指针指向创建它的函数对象的原型对象,而上一层的原型对象的结构依然类似,

    有自己的原型链指针,指向创建它的函数对象的原型对象。

    这样利用_proto_一直指向Object的原型对象上,

    而Object的原型对象用Object._proto_ = null表示原型链的最顶端。

    这样由一系列_proto_串起来的原型对象就构成了原型链。

    如此便 形成了javascript的原型链继承。

面向对象:

    概念:把程序中的关键模块都视为对象,而模块拥有属性及方法

    面向对象的三个基本特征(三大特性):封装,继承,多态0

    function Dog(){

        this.eat = function(food){

        }

    }

    var dog = new Dog();

      dog.eat('shi');

    构造函数 + 原型模式:

        function Blog(name, url, friend) {

            this.name = name;

            this.url = url;

            this.friend = friend;

        }

        Blog.prototype.alertInfo = function() {

            alert(this.name + this.url + this.friend);}

    in运算符:判断某个实例是否含有某个属性或方法,不管是不是本地属性或方法("move" in c);

    hasOwnProperty()方法:判断一个属性是自身属性,还是从原型链继承的属性(c.hasOwnProperty("name"))

你可能感兴趣的:(zj-js)