js中的函数有几种用法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
/*
function foo() {}
js中的函数有几种用法
1、普通函数 foo()
2、构造函数 new foo()
3、对象 foo.abc = 123
所有的全局变量和全局函数都是window的属性
js的执行流程:先预解析;再从上到下执行
普通函数中的this是window
*/
function Byte() {
// Byte函数被调用时,如下的方法会覆盖全局函数
getName = function () {
console.log(1);
}
return this;
}
Byte.getName = function () {
console.log(2);
}
Byte.prototype.getName = function () {
console.log(3);
}
var getName = function () {
console.log(4);
}
function getName() {
console.log(5);
}
// 此时Byte是对象,如下是在访问对象的属性,他的值是一个函数
Byte.getName(); //(28行代码) —— 2
// 调用全局函数
getName(); // (34行代码) —— 4
// // Byte()返回结果是window,并且调用了函数内赋值操作,全局函数会被覆盖
Byte().getName(); // (23行代码) —— 1
// // 此时调用的函数覆盖后的全局函数
getName(); // (23行代码) —— 4--> 1
// // new的是getName函数,不是Byte
new Byte.getName(); // 执行的是28行的构造函数 —— 2
// // new的是Byte构造函数,此时访问的getName应该是Byte的原型方法(31行)
new Byte().getName(); // (31行代码) —— 3
</script>
</body>
</html>