new关键词
1, new关键词作用1
自动 创建一个对象 并且 return 这个对象
2, new关键词作用2
改变 函数的this指向 指向 创建的这个对象
3, 通过操作this
给 函数创建的对象设定属性和函数方法
重点
new关键词创建的
this指向的
return返回的
实例化对象对应的 都是 一个对象
构造函数
所谓的构造函数 是 专门创建对象 设定对象 返回对象的函数
构造函数 一般都会和 new关键词一起调用
区别 普通函数 和 构造函数
JavaScript语法规范 约定俗成 构造函数名称使用 大驼峰命名法
所有单词的首字符大写
JavaScript语法规范 约定俗成 普通函数名称使用 小驼峰命名法
第一个单词首字符小写 其他单词首字符大写
实例化对象
所谓的实例化对象 是通过构造函数创建的对象 成为 实例化对象
// 设定的是一个函数
function CreateObj(num1, num2) {
// 之前是自己手动创建一个 空对象
// 现在不用自己写了 new关键词自动创建一个空对象
// const obj = {} ;
// 通过操作this设定new关键词创建的对象的属性
this.min = Math.min(num1, num2);
this.max = Math.max(num1, num2);
// 通过操作this设定new关键词创建的对象的函数
this.add = function () {
let res = 0;
for (let i = this.min; i <= this.max; i++) { res += i };
return res;
}
// 通过手动return创建的对象
// 和new关键词一起调用 new 关键词自动return创建的对象
// return obj;
}
// 直接调用空函数 函数的执行结果返回值是undefined
const res1 = CreateObj();
console.log( res1 );
// 和 new 关键词一起调用 空函数
const res1 = new CreateObj(50, 600);
console.log(res1);
// 和 new 关键词一起调用 空函数
const res2 = new CreateObj(6, 70);
console.log(res2);
函数的prototype
是每一个函数天生就有的属性
本质是一个对象 可以 存储数据和函数方法
构造函数创建的实例化对象 都可以 访问 构造函数的prototype
prototype就是一个公共的存储空间 这个构造函数创建的实例化对象 都可以访问