Day5
1-js 组成?
bom
dom
JavaScriptECMA
2-js 中有哪些数据类型?
string
array
string
number
object
boolean
3-typeof 和 instanceof 的区别
都是数据类型查看
typeof 简单的数组,查询 使用
typeof (查找的数据) 返回数据类型 分别为string
、Boolean
、number
、function
、object
、undefined
。
obj1 instanceof 数据类型 //obj1 instanceof obj2 相等返回值为true;否则返回false。
4-怎么判断两个对象想到等
ES6有一个方法来判断两个对象是否相等
console.log(Object.is(a,b))
这个方法判断的是a和b是不是同一个指针的对象
1.用Object.getOwnPropertyNames拿到对象的所以键名数组
2.比对键名数组的长度是否相等。否=>false。真=>3
3.比对键名对应的键值是否相等
因为对象键值对可能已键值对形式存在,判断一下,递归调用j接着判断,键值对
function isObjectValueEqual(a, b) {
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
if (aProps.length != bProps.length) {
return false;
}
for (var i = 0; i < aProps.length; i++) {
var propName = aProps[i]
var propA = a[propName]
var propB = b[propName]
// 2020-11-18更新,这里忽略了值为undefined的情况
// 故先判断两边都有相同键名
if(!b.hasOwnProperty(propName)) return false
if ((typeof (propA) === 'object')) {
if (this.isObjectValueEqual(propA, propB)) {
// return true 这里不能return ,后面的对象还没判断
} else {
return false
}
} else if (propA !== propB) {
return false
} else { }
}
return true
}
var a = {
id:1,
name:2,
c:{
age:3
}
};
var b = {
id:1,
name:2,
c:{
age:3
}
}
console.log(isObjectValueEqual(a,b));//true
5-js 中函数有哪些定义方式?
JavaScript 函数是通过 function 关键词定义的。
您可以使用函数声明或函数表达式。
函数声明
function functionName(parameters) { 要执行的代码 }
被声明的函数不会直接执行。它们被“保存供稍后使用”,将在稍后执行,当它们被调用时。
函数表达式
JavaScript 函数也可以使用表达式来定义。
函数表达式可以在变量中存储:
实例
var x = function (a, b) {return a * b};
系统对象也构建函数
1-定义
console.log(scope); //变量存在,输出“undefined”,而不是“global”
var scope = "local"; //变量在这里赋初始值
console.log(scope); //输出“local”
}
f();
(function () {
var x = "Hello!!"; //我会调用我自己
})();
3-剪头函数
箭头函数没有自己的 this。它们不适合定义对象方法。
箭头函数未被提升。它们必须在使用前进行定义。
使用 const 比使用 var 更安全,因为函数表达式始终是常量值。
如果函数是单个语句,则只能省略 return 关键字和大括号。因此,保留它们可能是一个好习惯:
实例
const x = (x, y) => { return x * y };
6-js 中函数有哪些调用形式?
以函数形式调用函数
实例
function myFunction(a, b) { return a * b; } myFunction(10, 2);
以上函数不属于任何对象。但是在 JavaScript 中,始终存在一种默认的全局对象。
在 HTML 中,默认全局对象是 HTML 页面本身,所有上面的函数“属于”HTML 页面。
在浏览器中,这个页面对象就是浏览器窗口。上面的函数自动成为一个窗口函数。
myFunction() 和 window.myFunction() 是同一个函数:
作为方法来调用函数
在 JavaScript 中,您可以把函数定义为对象方法。
下面的例子创建了一个对象(myObject),带有两个属性(firstName 和 lastName),以及一个方法(fullName):
实例
var myObject = {
firstName:"Bill",
lastName: "Gates",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // 将返回 "Bill Gates"
通过函数构造器来调用函数
如果函数调用的前面是 new 关键字,那么这是一个构造函数调用。
它看起来像你创建一个新的函数,但由于 JavaScript 函数是对象,你实际上创建一个新对象:
实例
// 这是函数构造器:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// 创建了一个新对象:
var x = new myFunction("Bill", "Gates");
x.firstName; // 会返回 "Bill"
this 关键词
在 JavaScript 中,被称为 this 的事物,指的是“拥有”当前代码的对象。
this 的值,在函数中使用时,是“拥有”该函数的对象。
请注意 this 并不是变量。它属于关键词。您无法改变 this 的值。