文章目录

  • 摘要
  • 1 引言
  • 2 基础
    • 2.1 嵌入网页
    • 2.2 基本语法
    • 2.3 数据类型
      • 2.3.1 基本数据类型
      • 2.3.2 高级数据类型
    • 2.4 程序结构
      • 2.4.1 顺序结构
      • 2.4.2 选择结构
      • 2.4.3 循环结构
  • 3 函数
    • 3.1 函数定义
      • 3.1.1 定义函数的两种方式
      • 3.1.2 函数参数
    • 3.2 变量作用域
    • 3.3 变量提升
    • 3.4 全局作用域
    • 3.5 命名空间
    • 3.6 解构赋值
    • 3.7 方法
    • 3.8 高阶函数
      • 3.8.1 map/reduce
      • 3.8.2 filter
      • 3.8.3 sort
  • 4 面向对象
    • 4.1 JS创建对象的方式
    • 4.2 原型对象(prototype)和对象原型(_ _ proto _ _)
    • 4.3 原型对象(prototype)中的constructor属性
    • 4.4 原型链实现继承
      • 4.4.1 call方法
      • 4.4.2 使用call继承
      • 4.4.3 原型链详解
      • 4.4.4 通过“中间人”链接原型链
    • 4.5 class语法糖
      • 4.5.1 class实现继承

摘要

下面文章中使用JS代替JavaScript

1 引言

JavaScript(以下统一简称JS)是目前最流行的脚本语言,没有之一,在你的手机,pad,电脑等交互逻辑都是通过JS实现的。

JS是一种运行在浏览器中的解释型的编程语言,nodejs将JS移植到了服务端,这让JS成为了全能战士

只要你想接触前端,JS是你绕不开的话题,在web前端领域,JS是绝对的顶流

JS 历史

1995年,还是一个静态网页时代,当时的网景公司凭借Navigator浏览器成为Web时代开启时最著名的第一代互联网公司。当时网景公司想在静态页面加一些动态效果,就让Brendan Eich设计JS语言,这哥们真是一个天才,竟然在10天时间内写出JS,没错,只有10天,至于为什么名字叫JavaScript,其实就是想蹭一下Java的热度,语言本身与Java毫无关系。

ECMAScript

因为JavaScript的功能十分适合网页的动态化,随着计算机技术的不断发展,人们也不再满足于静态网页,微软做为行业巨头,自然也嗅到了这个机会,于是在JS问世后一年,微软开发了Jscript,为了能够让JS成为全球标准,网景、微软还有几家公司联合ECMA组织制定了Javascript语言标准,被称为ECMAScript语言标准。

ECMAScript是一种语言标准,JavaScript是网景公司对ECMAScript标准的一种实现。

至于为什么不把JavaScript当作标准名称呢,是因为JavaScript被网景注册了商标,不是很严谨的场合可以把JS与ECMAScript当作一回事。

发展历程,版本迭代

JS是10天被设计出来,虽然Eich很牛,但谁也架不住时间紧、任务重,所以,JS有很多设计缺陷。

2015年ES6标准发布

2 基础

2.1 嵌入网页

方式1

JS脚本可以被嵌入在网页的各个部分,使用标签,一般放在body或者head中

方式2 直接引入文件

<script src="a.js"><script>

IDE 推荐

  • VScode
  • Sublime
  • Notepad++
  • HbuilderX

2.2 基本语法

JS每条语句以“;”结尾,语句块用{。。。},JS并不强制要求在每个语句的结尾加“;”,解释器负责给每个语句补上“;”,但是一般情况下,为了保持良好编程习惯,还是要在每行语句后面加上一个分号。

语句块

var a = 10;
"hello world!";
var b = 123; var c = 456; // 这是两条语句

注释

// 单条
/* 多条注释
*/

大小写

JS大小写敏感

2.3 数据类型

2.3.1 基本数据类型

Number

JS 不区分整数和浮点数,统一用Number表示

var a = 123;
console.log(typeof(a)); // number 
123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

数字类型可以使用+、-、*、/ 、%求余运算

字符串

//''或者“” 
// ``反引号可以包括多行文本
var s1 = "Hello";
var s2 = 'hello';
var s3 = `人生苦短我用JS多行文本输出`;

布尔

true
false

布尔运算符多用于条件判断,也可以进行逻辑运算,逻辑与&&,逻辑或||,逻辑非!

console.log(true && false); // false
console.log(true || false); // true
console.log(!true);         // false
var age = 15;
if(age>18){console.log("成年人");
}
else{console.log("未成年人"); // 未成年人
}

JS中的相等

<script>console.log(null === null); // trueconsole.log(NaN === NaN);   // false console.log(1/3 === (1-2/3)); // false console.log(Math.abs(1/3)-Math.abs(1-(2/3))<0.0000001); // true console.log('3'===3); // falseconsole.log('3'==3);  // true 
</script>

2.3.2 高级数据类型

数组

JS 的数组(Array)可以包含任意数据类型,并通过索引来访问每个元素。通过length属性获取Array的长度

  • length

    数组内的元素是可以原地修改的,可以通过数组的length属性动态修改数组的长度。

    var arr = [1,-9,null,true,99.9];
    console.log(arr.length);
    console.log(arr[1]);
    console.log(arr[2]);
    console.log(arr[4]);
    console.log(arr[5]); // 超过下标也不会报错,返沪undefined
    arr.length = 8;
    arr[7] = 'hello';
    console.log(arr); // [1, -9, null, true, 99.9, undefined, undefined , "hello"]
    
  • indexOf

    获取数组内元素的索引,如果没有这个元素,返回-1.如果有这个元素,直接返回这个元素对应的索引数值

    console.log(arr.indexOf(1)); //0 
    console.log(arr.indexOf(99.9)); //4
    console.log(arr.indexOf('fa')); //-1
    
  • slice

    截取数组的部分元素,返回一个新数组,不包括结尾索引

    var arr = [1,-9,null,true,99.9];
    console.log(arr); //index.html:10 (5) [1, -9, null, true, 99.9]
    var arr_ = arr.slice(0,3);  // 返回一个新数组
    console.log(arr_);  // (5) [1, -9, null, true, 99.9]
    console.log(arr);   // (5) [1, -9, null, true, 99.9]
    
  • push/pop

    push:从数组后面插入元素

    pop:从数据后面删除元素

    			var arr = ["三国战将"]arr.push("赵云");arr.push("关羽");arr.push("张飞");console.log(arr); //(4) ["三国战将", "赵云", "关羽", "张飞"]console.log(arr.pop()); // 删除最后一个元素并返回console.log(arr);   // (3) ["三国战将", "赵云", "关羽"]
    
  • unshift/shift

    unshift:从数组头部插入元素

    shift:从数据头部删除元素

    			var arr = ["三国战将"]arr.unshift("赵云");arr.unshift("关羽");arr.unshift("张飞");console.log(arr); //(4) ["张飞", "关羽", "赵云", "三国战将"]console.log(arr.shift()); // 删除第一个元素并返回console.log(arr);   // (3) ["关羽", "赵云", "三国战将"]
    
  • sort

    对当前数组进行排序,原地排序

    var a = ["C","B","A"];
    a.sort();
    console.log(a); // (3) ["A", "B", "C"]
    
  • reverse

    反转数组,原地反转数组

    var a = ["C","B","A"];
    a.reverse();
    console.log(a); // (3) ["A", "B", "C"]
    
  • splice

    splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素:

    var a = ["乔丹","科比","艾弗森","卡特","詹姆斯"];
    // 从第二个索引开始,删除两个元素,返回被删除的元素,同时从第二个索引开始添加新元素
    var d = a.splice(2,2,"韦德","安东尼"); 
    console.log(d); //(2) ["艾弗森", "卡特"]
    console.log(a); // (5) ["乔丹", "科比", "韦德", "安东尼", "詹姆斯"]
    
  • concat

    把当前数组和另一个数组链接起来,返回一个新数组

    var a = ["C","B","A"];
    var b = a.concat(1,2,3,[7,8,9]);
    console.log(a); // (3) ["C", "B", "A"]
    console.log(b); //(9) ["C", "B", "A", 1, 2, 3, 7, 8, 9]
    
  • join

    把数组中的每个元素用指定的字符串链接起来,返回链接后的字符串

    var a = ["C","B","A"];
    var b = a.join('-');
    console.log(a); // (3) ["C", "B", "A"]
    console.log(b); //C-B-A
    
  • 多维数组

    
    var a = [[1,2,3],[4,5,6]];
    console.log(a[1][1]); // 5
    console.log(a[0][2]); // 3
    

对象

JS的对象是一种无序的集合数据类型,由若干键值对组成,对象是面向对象编程的基础,程序中的一个个对象就是对现实生活的抽象。

用{。。。}表示一个对象, key:value形式申明,每个kv对之间用逗号分割,最后一个键值对不需要再末尾加,如果加了,有些老旧浏览器将报错;通过点号可以点出一个对象的属性,也可以通过obj[attr]获取属性,如果属性名有特殊字符,那么属性名必须用引号括起来,取属性的时候不能使用点号,所以对象的属性尽量使用没有特殊符号的单词,做到见名知意

			var xiaoming = {name:'小明',birth:1994,height:1.86,weight:78.0,score:null}console.log(xiaoming.name); // 小明console.log(xiaoming.age);  // undefinedconsole.log(xiaoming.birth); // 1994console.log(xiaoming['weight']); // 78xiaoming.xixi = 'haha';console.log(xiaoming.xixi); // haha
  • 即使对象没有这个属性,也不会报错
  • 可以创建对象后,动态设置属性,这是动态语言所特殊的
			console.log("xixi" in xiaoming);     // trueconsole.log("toString" in xiaoming); // trueconsole.log(xiaoming.hasOwnProperty('xixi'));  // trueconsole.log(xiaoming.hasOwnProperty('age'));   // falsedelete xiaoming.xixi;console.log(xiaoming.hasOwnProperty('xixi')); // false
  • 判断对象是否具备某个属性

    可以使用in关键字,attr in object 返回一个布尔值,如上例,toString没有在xiaoming这个对象中定义,但是同样返回true,这说明JS中所有对象的原型链都会有object对象,object对象有toString属性;

    如果只想拿到对象本身的属性,可以使用object.hasOwnProperty()方法

Map

Map是一组键值对结果,Map的查找时间复杂度为O(1)

  • 通过二维数组构造一个Map

    var m = new Map([['语文',78],['数学',98],['英语',79]]);console.log(m);//Map(3) {"语文" => 78, "数学" => 98, "英语" => 79}console.log(m.get('语文')); // 78console.log(m.has('英语'));  // true console.log(m.set('物理',100)); // Map(4) {"语文" => 78, "数学" => 98, "英语" => 79, "物理" => 100}delete m.delete('语文');console.log(m);

    Map.get() 获取一个key的值

    Map.has()判断这个集合中是否有这个key

    Map.set() 设置key-value

    Map.delete() 删除map的某个key

Set

Set和Map类似,Set是一个key的集合,但不存储value,由于key不能重复,所以Set中每个key都是唯一的。

创建一个Set,需要提供Array作为输入,或者直接创建一个空Set

			var s = new Set();s.add(1);s.add(2);s.add(3);s.add(3);console.log(s); // Set(3) {1, 2, 3}var s1 = new Set([1,2,3,'3',3,3,3]);console.log(s1); // Set(4) {1, 2, 3, "3"}s1.delete('3');s1.delete(2);console.log(s1);  // Set(2) {1, 3}

2.4 程序结构

2.4.1 顺序结构

JS中的顺序结构就是从上而下执行的。

2.4.2 选择结构

nullundefined0NaN和空字符串''视为false,其他值一概视为true

'use strict';var height = parseFloat(prompt("请输入身高(m):"));var weight = parseFloat(prompt("请输入体重(kg):"));var bmi = weight / (height*height);if(bmi<18.5){console.log("过轻");}else if(bmi>=18.5 && bmi < 25){console.log("正常");}else if(bmi>=25 && bmi < 28){console.log("过重");}else if(bmi >=28 && bmi < 32){console.log("肥胖");}else if(bmi >=32){console.log("严重肥胖");}else{console.log("数据有误");}

2.4.3 循环结构

  • while

    先判断条件,条件不满足一次都不执行

    'use strict';
    var sum = 0;
    var i =0 ;
    while(i<=100){sum += i;i ++ 
    }
    console.log(sum); // 5050
    
  • do-while

    先执行循环体,在判断条件,至少会执行一次循环体

    'use strict';
    var sum = 0;
    do{sum += i;i ++ 
    }while(i<=100);
    console.log(sum);
    

    通过一个小实例看一下while与do… while的区别

    'use strict';var sum = 0;var sum_ = 0;var i =1 ;do{sum += i;i ++ }while(i>100);console.log(sum);  // 1while(i>100){sum_ += i;i++;}console.log(sum_); // 0

    循环一定要注意结束条件,< 与 <= 会是完全不同的结果

  • 普通for循环

    与C语言的for循环基本相同

    var sum = 0;
    for(let i=0;i<=100;i++){sum += i;
    }
    console.log(sum); // 5050 
    
  • for…in

    遍历数组和对象这种容器数据类型

    'use strict';
    var arr = ["张飞","关羽", "赵云"];
    for(let i in arr){console.log(i);console.log(arr[i]);
    }var obj1 = {name:'xiaohua',age:14,grade:4
    }
    for(let i in obj1){console.log(i);console.log(obj1[i]);
    }
    

在这里插入图片描述

  • for…of

    遍历Array可以采用下标循环,遍历MapSet就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型。

    具有iterable类型的集合可以通过新的for ... of循环来遍历。

    'use strict';
    var arr = ["张飞","关羽", "赵云"];for(let i of arr){console.log(i);
    }for(let i of new Map([['语文',12],['数学',78]])){console.log(i);
    }for(let i of new Set([1,2,3])){console.log(i);
    }
    

在这里插入图片描述

  • foreach

    iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。

    'use strict';
    var a = ['A', 'B', 'C'];
    a.forEach(function (element, index, array) {// element: 指向当前元素的值// index: 指向当前索引// array: 指向Array对象本身console.log(element + ', index = ' + index);
    });
    // 张飞, index = 0
    // 关羽, index = 1
    // 赵云, index = 2
    

3 函数

函数是对一系列动作的抽象

3.1 函数定义

3.1.1 定义函数的两种方式

方式1:

'use strict';function abs(x) {if (x >= 0) {return x;} else {return -x;}
}
var result = abs(-9);
console.log(result);

方式2

​ 函数也是一个对象,通过function()关键字定义函数

'use strict';var abs = function (x) {if (x >= 0) {return x;} else {return -x;}
}
var result = abs(-9);
console.log(result);

3.1.2 函数参数

JS函数对于参数没有限制,可以多传递,也可以少传递,都不会报错

'use strict';var abs = function (x) {if (x >= 0) {return x;} else {return -x;}
}
var result = abs();
console.log(result); // NaNresult = abs(-9,1,'b','c','d','w');
console.log(result); // 9

arguments

arguments 是JS的一个关键字,这个关键字只有在函数内部有用,存储的信息是传入函数的参数,arguments类似Array但它不是一个Array。

'use strict';var abs = function (x) {console.log(arguments);for (let i=0; i<arguments.length;i++){console.log(arguments[i]);}if (x >= 0) {return x;} else {return -x;}
}
var result;
result = abs(-9,1,'b','c','d','w');
console.log(result); // 9

在这里插入图片描述

通过实例可以发现,无论有没有给函数加形式参数,都可以通过arguments关键字获取。

rest 参数

ES6标准引入了rest参数,arguments获取到了所有的输入参数,rest参数只获取额外的参数,rest参数前面使用…标识。

var test = function (a, b, ...rest){console.log(a); // 1console.log(b); // 2console.log(rest); // (4) [3, 4, 5, 6]
}test(1,2,3,4,5,6);

小心return

var test = function (a, b, ...rest){console.log(a); // 1console.log(b); // 2console.log(rest); // (4) [3, 4, 5, 6]return //浏览器会默认添加一个分号10  // 这句话就执行不了了
}var res = test(1,2,3,4,5,6);console.log(res); // undefined 

3.2 变量作用域

如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不能应用改变量

'use strict';var f1 = function(){var a = 10;console.log(a);
}console.log(a); //main.js:9 Uncaught ReferenceError: a is not defined at main.js:9

不同函数的相同函数名是相互独立,互不干扰的

嵌套函数,内部函数可以访问外部函数的作用域,外部函数访问不到内部函数的作用域

'use strict';function outer(){var a = 10;function inner(){var b = 11;console.log(a);}inner();  // 10console.log(b);  // ReferenceError: b is not defined
}outer();

内外部函数具有相同名称的变量,内部函数会覆盖外部函数

function outer(){var a = 10;function inner(){var a = 11;console.log(a);}inner();  // 11console.log(b);  // ReferenceError: b is not defined
}outer();

这说明JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。

3.3 变量提升

JS有三种声明变量的关键字,const, let, var

const 定义常量

'use strict'; const PI = 3.14;PI = 3; // TypeError: Assignment to constant variable.console.log(PI);
// 不能改变常量的值// 具有块级作用域
{const sum = 0 const a = 11;console.log(sum); // 0
}{const sum =100;const a = 12;console.log(sum); // 110
}console.log(sum); // main.js:18 Uncaught ReferenceError: sum is not defined

let 定义变量具有块级作用域,没有变量提升

// let不具备变量提升
var f1 = function(){var a = 1;console.log(a+b); //  ReferenceError: b is not definedlet b =2;
}f1() // 具有块级作用域{let sum = 0 let a = 11;sum += a;console.log(sum); // 11
}{let sum =100;let a = 12;sum += a;console.log(sum); // 112
}console.log(sum); // main.js:18 Uncaught ReferenceError: sum is not defined

vat 定义变量不具备块级作用域,具有变量提升

// 未定义变量b,直接使用不报错,是因为JS变量提升机制,但是赋值不会提升
var f1 = function(){var a = 1;console.log(a+b); // NaNvar b =2;
}f1() // 没有块级作用域
{var sum = 0 var a = 11;sum += a;console.log(sum); // 11
}{var sum =100;var a = 12;sum += a;console.log(sum); // 112
}console.log(sum); // 112

3.4 全局作用域

不在任何函数内定义的变量就具有全局作用域。实际上,JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性

var sub = "learn";console.log(sub);   // learn 
console.log(window.sub); // learn alert("hello");
window.alert('hello');// 全局windowvar temp = window.alert;window.alert = function(){}alert("hello"); // 没反应window.alert = temp;alert("hello"); // 触发

3.5 命名空间

使用命令空间可以净化全局作用域

var myApp = {}myApp.test = "hello"myApp.f1 = function() {console.log("myapp f1 is running");
}myApp.f1();var myApp2 = {}myApp2.test = "world";myApp2.f1 = function() {console.log("myapp f2 is running");
}myApp2.f1();

3.6 解构赋值

// 1 直接拆包
var [x,y,z] = ['hello','china','haha'];console.log(x); // hello
console.log(y); // china
console.log(z);  // haha// 2 格式必须相同
var [x,y,[a,b]] = ['中国','河北',['北京','天津']]; 
console.log(x); // 中国
console.log(y); // 河北
console.log(a); // 北京
console.log(b); // 天津// 3 可以忽略一部分
var [,,x] = ['hello','china','haha']; 
console.log(x); // haha 

3.7 方法

在一个对象中绑定函数,叫做这个对象得方法

var xiaoming = {name: '小明',birth: 1990,age:function(){var y = new Date().getFullYear();return y-this.birth;},
};var age = xiaoming.age();
console.log(age);

this关键字

this是一个特殊的关键字,始终指向当前对象,也就是上例中的xiaoming对象,所以,this.birth可以拿到xiaoming的birth属性。

// 拆开写

3.8 高阶函数

3.8.1 map/reduce

map 将一个函数作用在一个数组的所有元素上

function pow(x){return x*x;
}var arr = [1,2,3,4,5,6,7,8,9];var new_arr = arr.map(pow);console.log(arr); // (9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(new_arr); // (9) [1, 4, 9, 16, 25, 36, 49, 64, 81]// 同样可以用for循环实现var new_arr = new Array();for(let i=0; i<arr.length;i++){new_arr.push(pow(arr[i]));
}console.log(new_arr); // (9) [1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce

function add(x,y){return x+y;
}
var arr = [1,2,3,4,5,6,7,8,9];
var res = arr.reduce(add);// = add(add(add(add(add(add(add(add(1,2),3),4),5),6),7,8,9)
console.log(res);

3.8.2 filter

对一个数组内的元素进行过滤,满足条件的保留,不满足的剔除

'use strict';var arr = [1,2,3,4,5,6,7,8,9];function even(x){if ((x%2)==0){return true;}else{return false;}
}var res = arr.filter(even);
console.log(res);  // (4) [2, 4, 6, 8]

3.8.3 sort

var arr = [10, 20, 1, 2];
arr.sort((x, y) => {return x - y
});
console.log(arr); // [1, 2, 10, 20]

4 面向对象

4.1 JS创建对象的方式

字面量

'use strict';var obj = {"name":"zhangsan","age":14,"grade":"一年级"
};console.log(obj);

使用构造函数创建对象

function Player(name, age){ // 这是一个构造函数this.name = name;this.age = age;this.run = function() {console.log(this.name + " is running!"); }}var kobe = new Player("kobe", 12);
kobe.run(); // kobe is running!
var james = new Player("James", 123);
james.run();//James is running!

如果不写new,这就是一个普通函数,它返回undefined。但是,如果写了new,它就变成了一个构造函数,它绑定的this指向新创建的对象,并默认返回this,也就是说,不需要在最后写return this;

忘记写new的后果

  • ‘use strict’; 模式下,this的指向是undefined,给一个undefined绑定name会报错

    'use strict';function Player(name, age){this.name = name; // Cannot set properties of undefined (setting 'name')this.age = age;this.run = function() {console.log(this.name + " is running!"); }}var kobe =  Player("kobe", 12);
    // main.js:5 Uncaught TypeError: Cannot set properties of undefined (setting 'name')
    
  • 不是严格模式下,this指向的是window,this.name会直接设置一个全局变量,这样更危险,因为污染了命名空间

    function Player(name, age){this.name = name; this.age = age;this.run = function() {console.log(this.name + " is running!"); }}Player("kobe", 11);
    console.log(name); //kobe
    console.log(age);  // 11
    run();  // kobe is running!
    

4.2 原型对象(prototype)和对象原型(_ _ proto _ _)

JS 中一切皆对象,每个对象都会设置一个原型,也就是对象原型_ _ proto _ _属性,对象原型这个属性指向它的原型对象,这里说起来比较绕,原型链也是JS中的重点和难点,原型链在JS中的地位就类似Python中魔法方法的地位,搞不懂就只能停留到初级阶段,无法体会JS的精髓。

使用构造函数创建对象存在的问题

在这里插入图片描述

'use strict';function Player(name, age){this.name = name; this.age = age;this.run = function() {console.log(this.name + " is running!"); }}var kobe = new Player("kobe",456);
var james = new Player("James", 123);console.log(kobe.run == james.run); // false

通过上面的图片和代码的运行结果可以发现,每创建一个对象都会在内存中开辟出一个空间,保存这个对象的属性和方法,属性没有关系,但是相同的方法却被复制了很多次,如果创建的对象很多,那么程序的时间复杂度和空间复杂度会成倍增加,显然这不是一个好办法。

JS的发明者自然考虑到了这个问题,可以通过原型对象来解决,前面已经说过了JS中的每个对象都有一个原型对象,我们看一下什么是原型对象:

在这里插入图片描述

'use strict';function Player(name, age){this.name = name; this.age = age;
}Player.prototype.run = function(){console.log(this.name + "is running");
}var kobe = new Player("kobe",456);
var james = new Player("James", 123);console.log(kobe);console.log(kobe.run == james.run); // false

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-odeYPvd4-1636016576605)(C:\Users\z004abwh\AppData\Roaming\Typora\typora-user-images\image-20211104151108745.png)]

对象的原型链

kobe------> Player.prototype ----------> Object.prototype ----------> null

4.3 原型对象(prototype)中的constructor属性

原型对象的constructor属性指向的是构造函数本身。

console.log(kobe.__proto__.constructor); // 指向的就是其构造函数/*
ƒ Player(name, age){this.name = name; this.age = age;
}
*/

constructor用法:

如果一个构造函数,类似下面这种方式网原型对象添加属性,写起来会很长,之间的关系不是很清晰

function Player(name, age){this.name = name; this.age = age;
}Player.prototype.run = function(){console.log(this.name + "is running");
}Player.prototype.jump = function(){console.log(this.name + "is jumpping");
}

换一种方式:

function Player(name, age){this.name = name; this.age = age;
}Player.prototype = {constructor: Player, // 如果不加这个原型对象就会被覆盖,也就不知道实例是由哪个类实例化出来的run: function(){console.log(this.name + "is running");},jump:function(){console.log(this.name + "is jumpping");}
}var kobe = new Player("kobe",456);
var james = new Player("James", 123);console.log(kobe.__proto__.constructor);console.log(kobe.__proto__)console.log(kobe instanceof Player);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PFHCdLPf-1636016576606)(C:\Users\z004abwh\AppData\Roaming\Typora\typora-user-images\image-20211104152436251.png)]

如果把constructor: Player这句话注释掉,结果如下:

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8G8KMaM-1636016576608)(C:\Users\z004abwh\AppData\Roaming\Typora\typora-user-images\image-20211104163927922.png)]

4.4 原型链实现继承

4.4.1 call方法

function add(x, y){console.log(x+y);
}function sub(x, y){console.log(x-y);
}add.call(sub,1,3); // 4   用add函数替代sub函数
sub.call(add,1,3); // -2  用sub函数替代add函数

4.4.2 使用call继承

function Sex(props){this.sex = props.sex;
}function Person(props){this.name = props.name;
}function Student(props){Person.call(this, props); Sex.call(this, props);this.grade = props.grade;
}var s1 = new Student({name:'zs',grade:123,sex:'男'
});console.log(s1.name); // zs
console.log(s1.grade); // 123
console.log(s1.sex);  // 男

4.4.3 原型链详解

function Person(props){this.name = props.name;
}Person.prototype.say = function(){console.log("人都会说话的");
}function Student(props){Person.call(this, props); this.grade = props.grade;
}var s1 = new Student({name:'zs',grade:123
});console.log(s1);
s1.say(); // TypeError: s1.say is not a function
console.log(s1.__proto__ == Student.prototype)               // true
console.log(s1.__proto__.__proto__ == Object.prototype)      // true
console.log(s1.__proto__.__proto__.__proto__ == null)        // true

为什么出现这种报错呢?

s1 ------> Student.prototype -------> Object.prototype --------> null

这是什么鸟继承?只是继承了属性,但是原型链没有经过Person.prototype,所以会报错。

正确的原型链应该是这样的:

s1 ------> Student.prototype -------> Person.prototype ------> Object.prototype --------> null

Student.prototype = Person.prototype这样是不行的,因为Student和Person共享一个原型对象,那么创建两个类也没有意义。

4.4.4 通过“中间人”链接原型链

function Person(props){this.name = props.name;
}Person.prototype.say = function(){console.log("人都会说话的");
}function Mid(){}function Student(props){Person.call(this, props); this.grade = props.grade;
}Mid.prototype = Person.prototype;  // 把Mid的原型指向 Person.prototype
Student.prototype = new Mid() ;    // 把Student的原型指向一个Mid对象, Mid对象的原型正好指向Person.prototype 
Student.prototype.constructor = Student;  // 把Student的原型的构造函数恢复成Studentvar s1 = new Student({name:'zs',grade:123
});console.log(s1); 
s1.say();  //人都会说话的
console.log(s1.__proto__ == Student.prototype)               // true
console.log(s1.__proto__.__proto__ == Person.prototype)      // true
console.log(s1.__proto__.__proto__.__proto__ == Object.prototype)        // true

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xVWGsjwA-1636016576608)(C:\Users\z004abwh\AppData\Roaming\Typora\typora-user-images\image-20211104165043702.png)]

4.5 class语法糖

使用class创建类

'use strict';class Person {constructor (name){this.name = name;}say() {console.log(this.name + " is saying !");}}var p1 = new Person("正常人");p1.say()  // 正常人 is saying !

4.5.1 class实现继承

ES6的新特性通过class实现继承,class继承的方式可以减少编写原型链的代码。但是前提是浏览器要支持ES6.

'use strict';class Person {constructor (name){this.name = name;}say() {console.log(this.name + " is saying !");}}class Student extends Person{constructor(name,grade){super(name);this.grade = grade;}study() {console.log(this.grade+"年级的学生就应该学习");}
}var p1 = new Student("学生甲乙丙丁", 4);p1.say();   //学生甲乙丙丁 is saying ! 
p1.study(); // 4年级的学生就应该学习
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. torch分布式训练学习笔记

    分布式通讯包 - torch.distributed 基本初始化TCP初始化共享文件系统初始化环境变量初始化组点对点通信集体功能torch.distributed提供了一种类似MPI的接口&#xff0c;用于跨多机器网络交换张量数据。它支持几种不同的后端和初始化方法。 目前&#xff0c;torch.distributed…...

    2024/3/6 10:23:11
  2. 视觉SLAM十四讲CH7课后习题2

    转载于&#xff1a; 视觉SLAM十四讲&#xff08;第二版&#xff09;第7讲习题解答 - 知乎大家好&#xff0c;这里是Philip~最近在学习高博的《视觉SLAM十四讲》&#xff08;第二版&#xff09;&#xff0c;以下是对第7讲习题的解答&#xff0c;如有错误或不全面的地方还请大家…...

    2024/3/9 13:00:17
  3. 了解一下,直播软件源码如何使用字体图标

    首先生成4中不同类型的字体图标&#xff0c;如下图&#xff1a; 直播软件源码使用的字体图标是可以通过工具来生成的在css文件中&#xff0c;直播软件源码通过使用font-face规则来实现字体的定义。 font-face {font-family: lk;/* format表示格式 */src: url("../fonts/lk…...

    2024/3/21 0:29:44
  4. mac 生成公钥和私钥

    首先新建一个文件夹rsa ,然后打开终端进入到rsa : cd rsa ; 然后输入openssl 打开openssl ; 之后:输入 genrsa -out rsa_private_key.pem 1024 ; 生成私钥;你会发现 rsa目录下多了一个文件 rsa_private_key.pem输入 pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -out…...

    2024/3/6 10:23:08
  5. leetcode竞赛记录-第64场双周赛

    第64场双周赛记录得分排名情况赛题分析题一&#xff1a;数组中第K个独一无二的字符串&#xff08;easy完成&#xff09;题二&#xff1a;两个最好的不重叠活动&#xff08;medium未完成&#xff09;题三&#xff1a;蜡烛之间的盘子&#xff08;medium完成&#xff09;题四&…...

    2024/3/6 10:23:07
  6. HttpClient设置连接超时 读取超时

    //1.构造HttpClient的实例HttpClient httpClient new HttpClient();httpClient.getParams().setContentCharset("utf-8");//设置连接超时&#xff1a;httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);//设置读取超时&#xff…...

    2024/3/15 21:33:46
  7. centos7.x配置JDK8

    centos7.x配置JDK8 1、首先下载linux版本的JDK8程序包 链接&#xff1a;https://pan.baidu.com/s/1eroA6VI8UCdLdECsRWxxDA 提取码&#xff1a;gnzl 2、将程序包上传至centos7机器上 比如放到 /usr/local/目录下&#xff0c;然后进行解压 [rootVM-16-3-centos local]# tar …...

    2024/3/28 16:43:11
  8. labelme转voc代码中的一个小问题

    下载的代码中会出现这样的问题。 在 files [i,split("/")[-1].split(".json")[0] for i in files] 这行代码中加入.replace("\\","/") 此行代码变为 files [i.replace("\\","/"),split("/")[-1]…...

    2024/3/4 15:05:28
  9. unable to configure the Docker daemon with file /etc/docker/daemon.json:...

    docker启动失败 执行命令查看原因 dockerd发现问题&#xff1a; unable to configure the Docker daemon with file /etc/docker/daemon.json:… 基本上都是修改这个文件导致的 /etc/docker/daemon.json 加了 {"registry-mirrors":["https://registry.docke…...

    2024/3/29 2:03:45
  10. Typescript 条件语句

    if...else...if(true){ conlose.log(执行) }else{ conlose.log(不执行) } //执行 三元运算符 ...?..:..let aatrue let bbfalse aa?11:22 //11 bb?11:22 //22 循环语句for (初始化语句:判断条件;计数器更新) { 循环体... } 例&#xff1a; for(let i:number0;i<10;i)…...

    2024/3/6 10:23:06
  11. git实现多语言国际化支持—i18n

    一.element实现多语言 1.安装语言国际化的包 npm i vue-i18n8.22.2 2.配置element-ui // 进行多语言支持配置 import Vue from vue // 引入Vue import VueI18n from vue-i18n // 引入国际化的插件包 import locale from element-ui/lib/locale import elementEN from elemen…...

    2024/3/29 2:04:11
  12. 04_Provider基本使用

    文章目录状态管理provider举例1、引入库2、创建数据model3、创建全局共享数据4、子节点处理数据扩展多个子节点使用Consumer状态管理 在 Flutter 开发中&#xff0c;状态管理是一个永恒的话题。一般的原则是&#xff1a;如果状态是组件私有的&#xff0c;则应该由组件自己管理…...

    2024/3/6 10:23:04
  13. 汇编实验9

    《汇编语言》实验9 assume cs:code data segmentdb welcome to masm!db 02h,24h,71h ; 要求的三个颜色对应的16进制代码 data ends ;offset 理解使用有点问题…… stack segmentdb 16 dup(0) stack endscode segmentstart: mov ax,datamov ds,ax;数据区mov ax,stackmov ss,ax…...

    2024/3/6 10:23:03
  14. 深入理解时空图卷积(ST-GCN)

    深入理解时空图卷积&#xff08;ST-GCN&#xff09;整体描述空间上的图卷积举个例子回归ST-GCN时间上的卷积前言&#xff1a;本文试图从代码角度解读ST-GCN&#xff08;不包含图卷积理论知识&#xff09;&#xff0c;希望对研究行为识别的同学有所帮助&#xff0c;不正确的地方…...

    2024/3/6 10:23:02
  15. audio音频播放组件的封装,使其页面加载时主动播放,同时点击也会播放

    组件文件 audioPlay.vue <template><div><divclass"entask_audio":style"{color:isPlay ? #03BA82 : #999}"click"play()"><div class"flex_x" v-html"phoneticSymbols"></div><!-- 播放…...

    2024/3/6 10:23:01
  16. v-premission添加权限

    v-premission权限管理 1&#xff09;对表单右侧操作进行权限管理 注意&#xff1a; 1.只有权限标识的名字一样&#xff0c;才可以正确绑定权限。 2.需要增加权限的页面的组件路径一定要写到index才可以。 2&#xff09;增加权限 进入菜单页面&#xff0c;点击新增&#xf…...

    2024/3/6 10:23:00
  17. java工厂模式

    1. 什么是java工厂模式 java工厂模式就是&#xff0c;更具不同的条件返回不同的对象2.什么时候用java工厂模式 java工厂模式一般用在java继承时&#xff0c;通过不同条件返回不同子类对象用代码说话 假如有一个父类Animal public class Animal {String name;int age;public v…...

    2024/3/6 10:22:59
  18. java面向对象(多态)

    多态简介 多态是同一个行为具有多个不同表现形式或形态能力 多态就是同一个接口&#xff0c;使用不同的实例而执行不同的操作 同一个时间发生在不同的对象会产生不同的效果 多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 多态实现方式 继承 重写…...

    2024/3/29 1:40:08
  19. JS原型对象和对象原型的区别

    先抛去此文章的标题&#xff08;有点晕有木有&#xff1f;&#xff09;&#xff0c;来看下面这段程序 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&qu…...

    2024/3/21 21:01:06
  20. mPaas小程序使用国密算法sm2加密传参

    使用 miniprogram-sm-crypto使用文档npm i miniprogram-sm-crypto引入 const sm2 require(‘miniprogram-sm-crypto’).sm2; 在js文件里 const sm2 require(miniprogram-sm-crypto).sm2; const smTwo {sm2,cipherMode: 1, // 1 - C1C3C2&#xff0c;0 - C1C2C3&#xff0c;…...

    2024/3/19 10:35:21

最新文章

  1. 将当前mac地址转换为整数加n后重新转换为Mac地址

    将当前Mac转换为整数加1后重新转换为Mac&#xff0c;就解决了进位问题 #include <stdio.h> #include <stdlib.h> #include <string.h>// 将 MAC 地址转换为整数 unsigned long long mac_to_int(char *mac) {char mac_str[18];strcpy(mac_str, mac);char *ptr…...

    2024/3/29 5:16:30
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 151 shell编程,正则表达式,在C语言中如何使用正则表达式

    零&#xff0c;坑点记录&#xff1a;bash 和 dash 的区别&#xff0c;导致的坑点 查看当前用的shell 是啥&#xff0c;用的是/bin/bash hunandedehunandede-virtual-machine:~$ echo $SHELL /bin/bash 当shell 脚本运行的时候&#xff08;后面会学到方法&#xff0c;这里是最…...

    2024/3/29 1:42:13
  4. wordpress给指定ID分类添加特定的字段

    要在WordPress中为不同的分类添加特定的字段&#xff0c;您可以使用自定义字段&#xff08;Custom Fields&#xff09;功能。以下是一种方法&#xff0c;通过编写自定义的函数来实现。 首先&#xff0c;您需要创建一个自定义的函数来添加特定的字段。您可以在WordPress主题的f…...

    2024/3/27 20:39:55
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/3/27 10:21:24
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/3/24 20:11:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/3/29 2:45:46
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/3/24 20:11:23
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/3/26 20:58:42
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/3/28 17:01:12
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/3/24 5:55:47
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/3/29 1:13:26
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/3/26 23:04:51
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/3/26 11:20:25
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/3/24 20:11:18
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/3/28 9:10:53
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/3/29 0:49:46
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/3/24 20:11:15
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/3/27 7:12:50
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/3/24 20:11:13
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/3/26 11:21:23
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/3/28 18:26:34
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/3/28 12:42:28
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/3/28 20:09:10
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57