稳小情Javascript功能概念

用户头像
邯郸/学生/6年前/173浏览
稳小情Javascript功能概念
用户头像
稳小情

稳小情学习整理的js笔记,希望对你们有帮助!

前端学习笔记

闭包

闭包的防范:闭包会导致多个执行函数共用一个共有变量,如果不是特殊需求,应尽量防止这种情况的发生。

闭包:当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域不释放。造成内存泄露。

两个函数互相嵌套,把里面的函数保存到外面执行的时候,一定能够调用原来它在的那个函数环境里面的变量。

闭包的作用:

  • 实现共有变量 eg:函数累加器

  • 可以做缓存(存储结构) eg:eater

  • 可以实现封装、属性私有化 eg:Person()

  • 模块化开发,防止污染全局变量

立即执行函数

(function(){}) //执行一次销毁
//定义标准 (function({}))  w3c 不太标准:(function(){})();
//只有表达式才能被执行
var dem = function(){
    //和函数差不多执行完销毁
    console.log("a");
}();


对象包装类

构造函数内部原理

1.在函数体最前面隐式的加上this={}

2.在执行this.xxx = xxx

3.隐式的返回this

function ste(name,k,z){
    this.nane = "wenxiaoqing";
    this.age = age;
}
var ste = new ste("zhangsan","18")

包装类

数字有正常的原始值数字,原始值数字不能有属性和方法,对象可以有。原始值是坚决不可能有属性和方法的。

New String();
New Boolean();
New Number();

原型,原型链(call/apply);

汉子比英文字母多一个字节。

  1. 原型定义:原型是function对象的一个属性,他定义了构造函数制造出的对象公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法,原型也是对象。

  2. 利用原型特点和概念,可以提取共有属性。

  3. 对象如何查看原型→隐式属性 proto

  4. 对象如何查看对象的构造函数→constructor

  5. 构造函数有大驼峰式特点:每个单词首字母大写

//Person.prototype(原型),点的前面放的则是变量之类的。
//Person.prototype = {}; 是祖先。
//原型的增删改查
- //person.lastName = "a" //增加(但不是原型)
- //person(从控制台输入就是查看)
- //person.Prototype.name = "a";(改变原型)
- //delete person.name(删除) 
    
var person{
    name:name;
}
person.prototype = {
    height:1400,
    lang:4900,
    carName:"BMW";
}
function car(){};
car.prototype={constructor:person};
//控制台查询已改为person(){}

原型链

原型链增删改查

//绝大多数对象的最终都会继承自Object.prototype
//Object.create(原型) 它也能创建对象
//person.prototype.name = "sunny";
//function person(){}
//var person = object.create(person.prototype);

控制台可正常计算的范围:小数点前十六位,后十六位。正常数+与-

call/apply

作用:改变this指向  call需要把实参按照行程的个数传进去

区别:后面传的参数形式不同 apply需要传一个arguments

//test() →test.call();
functiontest(){
    
}

继承模式、命名空间、对象枚举

继承发展史

  1. 传统形式→原型链

    过多的继承了没用的属性

  2. 借用构造函数

    不能继承借用构造函数的原型

    每次构造函数都要多走一个函数

  3. 共享原型

    不能随便改动自己的原型

  4. 圣杯模式

命名空间

管理变量,防止全局污染,适用于模块化开发。

属性表示方法

obj.prop 控制台输入

obj["prop"] 控制台输入

var obj = {name:"b"} 控制台:obj.name = "b".

控制台输入 obj["name"] 显示b

obj.name → obj["name"] 括号里面必须是字符串

对象的枚举

for in
1. hasOwnProperty
2. in
3. instanceof

遍历或者叫做枚举

// A instanceof B

看A对象的原型链上 有没有B的原型。

A对象是不是B构造函数构造出来的


this笔试真题讲解

1. 函数预编译过程this→window
2. 全局作用域this→window     (this指向谁)
3. call/apply可以改变函数运行时this的指向
4. obj.fun()  fun()里面this指向obj

  1. arguments

  2. arguments.calle(指向函数自身引用)

  3. func.call

HTML小插曲

<meat content="xxxxx" name="keyuwords"></meat><!-关键字->
<meat content="xxxxx" name="description"></meat><!-描述->
<!-h1标签只能在网页中使用一次,有利于搜索引擎->

arguments.克隆

深度克隆需要连个参数

function deepclone(origin,target){}

  1. 判断是不是原始值(是的话直接拿过来)

  2. 判断是数组或对象

  3. 建立相应的数组或对象

三目运算符

数组

//数组的定义new Aarray(length/content);字面量
//数组的读和写
 //arr[num] 不可以溢出读
 //arr[num] xxx;可以溢出写

两种定义: var arr = [];  var arr = newArray();

数组的常用方法

改变原数组

push,pop,shift,unshift,sort,reverse(逆转顺序)、splice

不可改变原数组

concat/join→split,toString,slice

arr.splice(从第几位开始截取多少的长度,在切口处添加新的数据)

arr.splice(3,0,4)   1,2,3,4,5

-1就是倒数第一位 数组里面可以有复数

arr.sort(排序)

  1. 必须写俩参数

  2. 看返回值

    ①当返回为负数时,那么前面的数字放在前面

    ②为正数,那么后面的数在前面

    ③为0,则不动

    var arr = [1,6,4,8,3,2,10];
    arr.sort(function(a,b)){
             if(a>b){
          return 1; 
      }else{  //升序
                return -1; 
            }
     //降序就改成a<b;
    }
    var arrr = [1,2,3,4];
    arrr.sort(function()){
     return Math.random()-0.5;          
    }
    //slice 从该位开始截取,截取到该位

    数组去重

    一旦经历了var 的操作,所得出来的属性,(window),这种属性叫做不可配置的属性,不可配置的属性delete不掉。

    var a = 1; 
    //控制台: delete a ;  删不掉这个属性
    或者下面这个靠谱一些
    1. 预编译this→window
    2. 谁调用的this指向谁
    3. call apply
    4. 全局this→window

    每次想使用构造函数就需要new,构造对象

    想通过构造函数构造对象的话,你就得new,不new生成不了对象。

    例子:

    function a(){}
    var a = new a();
    new 加函数执行才会有这两步 var this= {}; return this;
    下面是例子 隐式的 两步
    function a(){
        var this = {}
        this.name = '2';
        return this
    }

    而正常执行a的话,他只会走预编译,new也会走预编译

    不加new的时候,直接写a()的时候,她不会有var this 与return


0
举报
|
收藏
分享
相关推荐
评论
用户头像
评论你的想法~
表情
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
网页设计——纸杯蛋糕
一个人拿着优惠券准备支付购物电商矢量插画
卡通风格网页页面3D渲染
网页背景
女生坐在网页面前办公矢量插画
网页页面矢量插画
3D风格时尚电子商务设计元素
户外旅行飞机情侣假日出行
三位美女围着网页看信息矢量插画
三个青年站在网页周边矢量插画
卡通风格网页页面3D渲染
卡通女孩与网页表格3D渲染
男生和女生站在网页面前矢量扁平插画
网页电商背景矢量插画
卡通风格网页页面3D渲染
新年快乐送福网页矢量图banner
互联网,互联网插画,商务,数据,项目,合作,精准,投放,网页插画,插画,大数据,智能,商业,网页,网页设计,插画设计,互联,未来,交流,沟通,渐变
互联网,互联网插画,商务,数据,项目,合作,网页插画,插画,大数据,智能,商业,网页,网页设计,插画设计,互联,未来,沟通,渐变,蓝色插画,商铺,覆盖,管理,项目管理,效率,提升,高效,关系,拓展,
一个男生和两个女生站在网页前面打招呼矢量
卡通风格网页页面3D渲染
四个人物分别在上网贴纸合集
浏览电脑网页的元素
卡通风格网页页面3D渲染
网页图标
 网页背景
你可能喜欢
相关收藏夹
大家都在看
登录注册