93 阅读2分钟
  • 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