- this指针
- new 的返回值
- 原型链查找
function Foo() {
//函数声明,函数内的代码不会执行
Foo.a = function() {
console.log(1)
}
// 指向新对象
this.a = function() {
console.log(2);
}
// 如果是基本数据类型,obj是调用构造函数创建的对象;如果是引用数据类型,obj是返回的对象
return Foo
}
Foo.prototype.a = function() {
console.log(3)
}
Foo.a = function() {
console.log(4)
}
Foo.a();
let obj = new Foo();
obj.a()
Foo.a()
每日一题 :(京东)写出如下代码的打印结果(javascript中Object对象指向 形参和实参的区别)_badboy__biubiubiu的博客-CSDN博客
- Object对象指向
- 形参和实参的区别
//实参赋值给实参
function changeObjProperty(o) {
o.siteUrl = "http://www.baidu.com";
o = new Object();
o.name = 'coco';
o.siteUrl = "http://www.google.com";
console.log(o.siteUrl);
}
let webSite = new Object();
changeObjProperty(webSite);
console.log(webSite);
function changeObjProperty(o) {
// let o = webSite 这是形参传过来有一个赋值的操作
o.siteUrl = “http://www.baidu.com” //改变对象,所以同个指向的两个属性都改变
o = new Object() //这里是给o改变了指向,但是形参传过来的没改变
o.siteUrl = “http://www.google.com”
}
let o = {}
o.siteUrl = "http://www.baidu.com";
let pre = o ;
o = new Object();
o.siteUrl = "http://www.google.com";
console.log(o.siteUrl);
console.log(pre.siteUrl);
- 事件循环(同步任务—微任务—宏任务)
- await后的函数会执行,函数后的代码相当于在.then()里
- new Promise立即执行,resolve(),reject()是微任务
async function async1() {
console.log('async1 start');
// await后的函数会执行
await async2();
//相当于在.then()里
console.log('async1 end');
}
async function async2() {
console.log('async2');
}
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
},0)
async1();
new Promise(function(resolve) {
// 立即执行
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
});
console.log('script end');
/*
script start
async1 start
async2
promise1
script end
async1 end
promise2
setTimeout
*/
js中运算符优先级问题 - binaryTree_fe - 博客园 (cnblogs.com)
- 赋值运算符是自右向左结合的
- 变量存储的是引用地址
var a = {
n: 1
};
var b = a;
a.x = a = {
n: 2
};
console.log(a.x);
console.log(b.x)
- 对象的键名只能是字符串或symbol
var a = {},
b = '123',
c = 123;
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);
// c
var a = {},
b = Symbol('123'),
c = Symbol('123');
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);
//b
var a = {},
b = {
key: '123'
},
c = {
key: '456'
};
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);
//c
//b.toString()===c.toString()
// true