写在前面
废话不多说,请看下面3道题,把6个console.log()的答案写下来,然后对照着在Console控制台里敲一遍,校验一下结果。
more
代码片段
```
var A = function() {};
a.prototype = {
num : 1,
text : 'aaa'
};
var x = new A();
// 第一题
console.log(x.num);
console.log(x.text);
// --这里是分割线--
var y = new A();
A.prototype = {
num : 2
};
// 第二题
console.log(y.num);
c
继续阅读 »
原型链继承
让构造函数的原型对象等于另一个类型的实例,利用原型让一个引用类型继承另一个引用类型的属性和方法
```
function SuperType()
{
this.property=true;
}
SuperType.prototype.getSuperValue=function(){
return this.property;
};
function SubType()
{
this.subProperty=false;
}
//继承SuperType
SubType.prototype=new SuperType();
SubType.prototype.getSubValue=f
继续阅读 »
原始类型
text
ECMAScript有5种原始类型(primitive type),即Undefined、Null、Boolean、Number和String。ECMAScript提供了typeof来判断值的类型。
typeof运算符
var sTemp="test string";
alert(typeof sTemp);//outpus "string"
alert(typeof 95);//outpus "number"
text
typeof运算符返回值只有5种,分别为:如果变量是Undefined型返回"undefined",如果变量是Boolean型返回"boolean",如果变量是Number型返回"n
继续阅读 »
面试或被面试时基本都会涉及到这个最原始的 JavaScript 基础问题,试想一下您有没有在某些时候向别人解释这些概念时,把自己给绕进去了;网络上偶遇一篇英文文章,细读之后觉得有参考价值,文章不长,就顺手翻译了一下,希望某些同学可以用的上。
原文文中的 Scope 翻译成中文是“变量作用域”,译文某些地方直接简称为“作用域” ,Closure 翻译后是“闭包”。Rebort Nyman 的原文是 Explaining JavaScript Scope And Closures,某些不清楚的地方可以直接参考原文。
以下是译文
背景
很多文章或博客都在试着解释作用域和闭包,但大多数都没有解释的很清楚(crystal-clear)
继续阅读 »
对《JavaScript Patterns》和《Learning JavaScript Design Patterns》的一些总结,大部分是以链接的形式链接到更详细的笔记
感谢 汤姆大叔的关于设计模式的文章 和工作室小伙伴东帅,我们的讨论总能迸出点什么,这是他关于 Java Design Patterns 的 repo
继续阅读 »
递归
```js
function deepCopy(obj) {
if (!obj || typeof obj !== 'object') return obj;
var target = isPlainObject(obj) ? {} : [],
property, val;
for (var key in obj) {
val = obj[key];
// 防止循环引用
if (val === obj) continue;
if (Array.isArray(val) || isPlainObject(val)) {
target[key] = deepCo
继续阅读 »
引用类型
Object类
```text
ECMAScript中的所有类都是由Object类继承而来。
Object类具有下列属性:
Constructor:对创建对象的函数的引用(指针),对于Object类,该指针指向原始的Object()函数
Prototype:对该对象的对象原型的引用。
Object类还有几个方法:
1、PropertyIsEnumerable(property):判断给定的属性是否可以用for...in语句进行枚举
2、ToString():返回对象的原始字符串表示。
3、ValueOf():返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值相同。
继续阅读 »
创建对象
工厂模式
工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题
缺点:没有解决对象识别问题,所有对象都仅是Object的实例
```
function createPerson(name,age,job)
{
var o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){
alert(this.name);
};
return o;
}
var person1=createPerson("Jack",29,"Engineer");
//检测对象类型
继续阅读 »
Finder
是不是发现有些网站不允许选中?
不允许选中是什么意思,也就是说,用户不能对里面的数据进行任何的Ctrl-C这种的操作。
比如我知道一个网站叫批改网
老师可以在里面出英文题目,学生作答。为了防止同学们用神技CVS大法(复制粘贴保存的快捷键)
继续阅读 »
前言
命名、抽象、标识是通用设计结构的主要方面,这些设计结构能被用于构造可复用的面向对象设计。设计模式确定所包含的类和实例、它们的角色、协作方式以及职责分配。
每一种设计模式都重点关注一个特定的对象设计问题或者设计要点,描述何时使用它,在另一些约束条件下是否还能使用,以及使用的效果和利弊。由于我们最终要实现设计,设计模式还是提供了示例,代码来阐明其实现。
虽然设计模式描述的是面向对象设计,但是他们都是基于实际的解决方案。这些设计方案的实现语言是主流面向对象的编程语言。
more
设计模式的分类
创建型设计模式
创建型设计模式专注于处理对象创建机制,以适合给定情况下的方式来创建对象,创建对象的基本方法都可能导致项目复杂性增
继续阅读 »