sheng00 的所有文章
jsonp用法简单介绍
JavaScript:工厂模式
工厂模式定义:实例化对象,用工厂方法代替new操作。
function CarMaker () {
}
CarMaker.prototype.drive = function () {
console.log("Vroom, I have " + this.doors + " doors");
}
CarMaker.factory = function (type) {
var constr = type,
newcar;
if(typeof CarMaker[constr] !== "function"){
throw{
name:"Error",
message: constr + " doesn't exist"
};
}
if(typeof CarMaker[constr].prototype.drive !=="function"){
CarMaker[constr].prototype = new CarMaker();
}
newcar = new CarMaker[constr]();
return newcar;
}
CarMaker.Compact = function(){
this.doors = 4;
}
CarMaker.Convertible = function(){
this.doors = 2;
}
CarMaker.SUV = function(){
this.doors = 3;
}
var corolla = CarMaker.factory('Compact');
var solstice = CarMaker.factory('Convertible');
var cherokee = CarMaker.factory('SUV');
corolla.drive();
solstice.drive();
cherokee.drive();
内置的Object也表现了工厂的行为:
var o = new Object(),
n = new Object(1),
s = Object("s"),
b = Object(true);
console.log(o.constructor);
console.log(n.constructor);
console.log(s.constructor);
console.log(b.constructor);
Google Adsense 收不到PIN的解决办法
Google Adsense的PIN邮到国内很多人都收不到,而不验证PIN的话可能导致广告无法展示,不能打款。
这里给大家提供一个解决办法:
打开网址https://support.google.com/adsense/contact/id_verification?rd=1
把你的信息填进去,很快就好了。
Good luck。
下面是我提交表单之后收到的邮件。
AMD support Module of JavaScript
var myModule = {
awesome: 'not really'
};
if (typeof define === 'function' && define.amd) {
define('myModule', [], function() {
return myModule;
});
}
JavaScript变量类型检查
var str = 'str';
console.log(typeof str); // string
console.log(str.constructor); // String
function User(){}
var u = new User();
console.log(typeof u); // object
console.log(u.constructor); // User
Variable | typeof Variable | Variable.constructor |
---|---|---|
{an:"object"} |
object | Object |
["an","array"] |
object | Array |
function(){} |
function | Function |
"a string" |
string | String |
33 |
number | Number |
true |
boolean | Boolean |
new User() |
object | User |
JavaScript引用
JavaScript的一个重要的方面是引用的概念。引用就是指向对象实际位置的指针。这是一项极其强大的功能。前提是,实际的对象决不是一个引用:字符串总是一个字符串,数组总是一个数组。然而,多个变量可以引用相同的对象。JavaScript就是以这种引用机制为基础。通过维护一系列的指向其他对象的引用,语言为你提供了更大的弹性。
当几个变量指向相同对象时,修改这个对象会在所有指向这个对象的变量上有什么反应呢?
var obj = new Object();
var objRef = obj;
obj.someProp = true;
console.log(objRef===obj); // true
var arr = new Array(1,2);
var arrRef = arr;
arr.push(3);
console.log(arr === arrRef); // true
var str = "test";
var strRef = str;
str += "ing";
console.log(str === strRef); // false
var num = 1;
var numRef = num;
num += 1;
console.log(num === numRef); // false
var boo = true;
var booRef = boo;
boo = !boo;
console.log(boo === booRef); // false
我们知道string, number, bool
是JavaScript的基础类型,Object, Array
是组合类型,组合类型的值是以对象的属性存储的,所以改变了一个变量的值,所有指向它的变量都会变。
自动转换为下拉列表的网站导航栏
JavaScript原型继承
function A(){
this.fa = function(){
console.log("function in A");
}
}
function B(){
this.fb = function(){
console.log("function in B");
}
}
var a = new A();
a.fa();//function in A
var b = new B();
// b.fa(); //throw error;
b.fb(); //function in B
console.log(b instanceof A) //false
B.prototype = new A();
var b = new B();
b.fa(); //function in A
b.fb(); //function in B
console.log(b instanceof A)//true
console.log(b instanceof B)//true
14 rules for fast web pages
- Make fewer HTTP requests
- Use a CDN
- Add an Expires header
- Gzip components
- Put CSS at the top
- Move JS to the bottom
- Avoid CSS expressions
- Make JS and CSS external
- Reduce DNS lookups
- Minify JS
- Avoid redirects
- Remove duplicate scripts
- Turn off ETags
- Make AJAX cacheable and small