最近换了新工作,面试过程中有多多少少的问题没有给的出答案,为自己的技术短板而促急。

javascript中万物皆对象(键:值构成的一种数据),暂且不讨论这个句话的对与错,可以想象对象在javascript中的重要性,而面向对象的设计模式更是走向高级前段开发的必须要技能。


创建对象的三种方式

字面量创建对象

 //1.创建一个空对象
var obj = {}; //2.obj对象添加属性
obj.name = 'obj';
//3.obj对象添加方法
obj.toString = function(str){
return str;
}

new + 构造函数创建对象

 //1.创建Base构造函数
function Base(){
console.log(888)
} //2.使用new+Base()创建obj对象
var obj = new Base();
/*new具体做了下面三件事情
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
return obj;
第一行, 我们创建了一个空对象obj
第二行, 我们将这个空对象的__proto__成员指向了Base函数对象prototype成员对象
第三行, 我们将Base函数对象的this指针替换成obj, 然后再调用Base函数, 于是我们就给obj
对象赋值了一个id成员变量, 这个成员变量的值是” base”, 关于call函数的用法。
第四行,返回新的对象。
* */ //3.给obj对象添加原型方法,注意这里不是obj.prototype,而是Base.prototype。
Base.prototype.toString = function(){
return this.id;
} console.log(obj);

行为委托模式创建对象(Object.create())

 //1.创建一个行为对象foo
foo = {
init: function(who) {
console.log(9999)
},
indentify: function() {
console.log(8888)
}
};
//2.bar行为对象继承foo行为对象(把foo行为对象委托给bar行为对象)
bar = Object.create(foo); //3.b1和b2继承bar行为对象(把bar行为对象委托给b1和b2行为对象)
var b1 = Object.create(bar);
var b2 = Object.create(bar); //上面的行为委托都是通过原型链的形式进行委托。
console.log(foo);
console.log(bar);
console.log(b1);

最新文章

  1. JavaScript中getBoundingClientRect()方法详解
  2. ie8兼容性(不支持trim 、readonly光标、乱码encodeURI())
  3. android adb常用命令
  4. C++之迭代器
  5. python读取excel并制表输出
  6. Bootstrap系列 -- 12. 水平表单
  7. Count the Colors(线段树染色)
  8. PAT1015. Reversible Primes
  9. 基于AutoCAD的空间数据共享平台雏形
  10. java模拟OSUnMapTbl[]
  11. scala学习笔记:理解lazy值
  12. 关于layoutSubviews以及drawRect方法
  13. 使用Portainer管理Docker
  14. Python全栈之路----函数----匿名函数
  15. PAT A1019 General Palindromic Number (20 分)——回文,进制转换
  16. jetty 之 form too large | form too many keys 异常
  17. Codechef October Challenge 2018 游记
  18. gfs故障恢复
  19. jqgrid 设置编辑行中的某列为下拉选择项
  20. 修改VIM恶心的注释自动格式化

热门文章

  1. 【Quartz.net】- Cron表达式
  2. 修改IP的批处理
  3. c#控件的name和text属性有什么不同?
  4. Python文件操作:同一个文件进行内容替换
  5. 【python】 可迭代对象、迭代器、生成器
  6. 《时间序列分析及应用:R语言》读书笔记--第二章 基本概念
  7. Uva-oj Product 大数乘法
  8. Desert King 最小比率生成树 (好题)
  9. 题解【bzoj4653 [NOI2016] 区间】
  10. 洛谷 3029 [USACO11NOV]牛的阵容Cow Lineup