foo()
var foo
function foo() {
console.log(1)
}
foo = function () {
console.log(2)
}
console.log(foo)
function Foo() {
getName = function () {
console.log(1);
};
return this;
}
Foo.getName = function () {
console.log(2);
};
Foo.prototype.getName = function () {
console.log(3);
};
var getName = function () {
console.log(4);
};
function getName() {
console.log(5);
}
console.log(getName)
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
function Foo() {
getName = function () {
console.log(1);
};
return this;
}
Foo.getName = function () {
console.log(2);
};
Foo.prototype.getName = function () {
console.log(3);
};
var getName = function () {
console.log(4);
};
function getName() {
console.log(5);
}
console.log(Foo)
console.log(Foo.getName)
// -----------------------------------------------------------
// 1、
function A() {
console.log(1)
}
function fn() {
A = function () {
console.log(2)
}
return this
}
fn.A = A
fn.prototype = {
A: () => {
console.log(3)
}
}
console.log(fn.A === A)
console.log(fn)
console.log(fn.A === A)
console.log(fn.A === A)
.console.log(typeof fn)
// 1,1 2 2 3 3
A()
fn.A()
fn().A()
new fn.A()
new fn().A()
new new fn().A()
// 2、 自执行函数中的this都指向window
var x = 2; // 4 16
var y = {
x: 3,
z: (function (x) {
console.log(this)
this.x *= x
x += 2
return function (n) {
this.x *= n
x += 3
console.log(x)
}
})(x)
}
var m = y.z
m(4)
y.z(5)
console.log(x, y.x)
// 3、
// js== 比较规则
// 对象 == 字符串 -> 对象.toString()变为字符串再来比较
// null == undefined 相等,但是和其他值比较就不再相等了
// NaN == NaN false 不相等
// 剩下的都是转换为数字进行比较 (引用类型和数字进行比较时,先执行toString方法,然后调用number(),最后再进行比较)
var a = '?'; // 如何设置a使下面的能够执行
a = {
i: 1,
toString() {
return this.i++
}
}
if (a == 1 && a == 2 && a == 3) {
console.log(1) //
} else {
console.log(2)
}
//4、
var x = 0, y = 1
function fn() {
x += 2
fn = function (y) {
console.log(y + (--x))
}
console.log(x, y)
}
fn(3)
fn(4)
console.log(x, y)
//5、
setTimeout(() => {
console.log(1)
}, 2)
console.log(2)
setTimeout(() => {
console.log(3)
}, 10)
console.log(4)
console.time('Aa')
for (let i = 0; i < 900000; i++) {
}
console.timeEnd('AA')
console.log(5)
setTimeout(() => {
console.log(6)
}, 800)
console.log(7)
setTimeout(() => {
console.log(8)
}, 15)
console.log(9)