javascript常用代码段搜集_Javascript教程-查字典教程网
javascript常用代码段搜集
javascript常用代码段搜集
发布时间:2016-12-30 来源:查字典编辑
摘要:1.json转字符串复制代码代码如下:functionjson2str(o){vararr=[];varfmt=function(s){if...

1.json转字符串

复制代码 代码如下:

function json2str(o) {

var arr = [];

var fmt = function (s) {

if (typeof s == 'object' && s != null) return json2str(s);

return /^(string|number)$/.test(typeof s) " : s;

};

for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));

return '{' + arr.join(',') + '}';

}

2.时间戳转为Date

复制代码 代码如下:

function fromUnixTime(timeStamp) {

if (!timeStamp || timeStamp < 1000 || timeStamp == ' ') return "";

var theDate = new Date(parseInt(timeStamp) * 1000);

return theDate;

}

3.Data-format

复制代码 代码如下:

// 作者: meizz

// 对Date的扩展,将 Date 转化为指定格式的String

// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,

// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)

// 例子:

// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2012-12-02 08:12:04.423

// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2012-12-02 8:12:4.18

Date.prototype.Format = function(fmt) {

var o = {

"M+": this.getMonth() + 1, //月份

"d+": this.getDate(), //日

"h+": this.getHours(), //小时

"m+": this.getMinutes(), //分

"s+": this.getSeconds(), //秒

"q+": Math.floor((this.getMonth() + 3) / 3), //季度

"S": this.getMilliseconds() //毫秒

};

if (/(y+)/.test(fmt))

fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

for (var k in o)

if (new RegExp("(" + k + ")").test(fmt))

fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) " + o[k]).substr(("" + o[k]).length)));

return fmt;

};

4.日期上增加n天

复制代码 代码如下:

function addDay(number) {

return fromUnixTime(new Date().getTime() / 1000 + 24 * 60 * 60 * number);

}

5. 使用 iframe 时,父窗体与子窗体之间的相互调用

复制代码 代码如下:

// 父窗体调用子窗体内的函数

window.frames['ifm_id'].valueChange("id_101");

// 子窗体调用父窗体的函数

parent.refreshTree("nodeId_202");

6. 弹出窗体与返回值

复制代码 代码如下:

// 弹出窗体

var url = "http://www.baidu.com";

win=window.showModalDialog(url,window,"dialogLeft:400;dialogTop:200;dialogWidth:560px;dialogHeight:380px;scroll:yes;menubar:no;toolbar:no;status:no;");

// 在弹出窗体中设置返回值

var result = new Array();

result[0] = "id_101";

result[1] = "name_202";

window.returnValue = result;

window.close();

7. javascript 作用域[只有全局作用域和函数作用域,javascript没有块作用域]

复制代码 代码如下:

// 1. 全局作用域

var id = "global variable"; // 1.1 在函数外部定义的变量

function showMsg(){

message = "global message";// 1.2 未定义而直接赋值的变量

// 在第一次使用时被定义为全局变量

}

// 2. 函数作用域

function doCheck(){

var data = "function data";// 2.1 在函数内部定义的变量

}

8. javascript 继承机制

复制代码 代码如下:

// 1. 对象冒充继承

function Person(strName){

// private fields

var name = strName;

// public methods

this.getName = function(){

return name;

};

}

function Student(strName,strSchool){

// 定义父类的属性及方法

this.parent = Person;

this.parent(strName);

delete this.parent; // 删除临时变量 parent

// 定义新属性及方法

// private fields

var school = strSchool;

// public methods

this.getSchool = function(){

return school;

};

}

// 2. Funtion 对象的 call(..) 或 apply(..) 继承

// call 和 apply 的区别在于:

// call 的第二个参数为可变参数;

// apply 的第二个参数为 Array;

function Animal(strName,intAge){

// private fields

var name = strName;

var age = intAge;

// public methods

this.getName = function(){

return name;

};

this.getAge = function(){

return age;

};

}

function Cat(strName,intAge,strColor){

// 定义父类的属性及方法

Animal.call(this,strName,intAge);

// Animal.apply(this,new Array(strName,intAge));

// 定义新属性及方法

// private fields

var color = strColor;

// public methods

this.getInfo = function(){

return "name:" + this.getName() + "n"

+ "age:" + this.getAge() + "n"

+ "color:" + color;

};

}

// 3. prototype 继承

// prototype 声明的属性及方法被所有对象共享

// prototype 只有在读属性的时候会用到

Function.prototype.extend = function(superClass){

// 此处的 F 是为了避免子类访问父类中的属性 this.xxx

function F(){};

F.prototype = superClass.prototype;

// 父类构造函数

this.superConstructor = superClass;

this.superClass = superClass.prototype;

this.prototype = new F();

this.prototype.constructor = this;

};

Function.prototype.mixin = function(props){

for (var p in props){

this.prototype[p] = props[p];

}

};

function Box(){}

Box.prototype = {

getText : function(){

return this.text;

},

setText : function(text){

this.text = text;

}

};

function CheckBox(){}

CheckBox.extend(Box);

CheckBox.mixin({

isChecked : function(){

return this.checked;

},

setChecked : function(checked){

this.checked = checked;

}

});

9. call , apply & bind

复制代码 代码如下:

// thisArg 表示在 fun 内部时 this 所指示的对象

// call & apply 将立即执行 fun 并返回结果

var result = fun.call(thisArg,arg1,...);

var result = fun.apply(thisArg,[argsArray]);

// thisArg 表示在 fun 内部时 this 所指示的对象

// bind 返回的是一个匿名函数

var tmpfun = fun.bind(thisArg);

var result = tmpfun(arg1,...);

复制代码 代码如下:

<script type="text/javascript">

/**

* 扩展 Function 的功能

*/

Function.prototype.bind = function(obj){

var method = this;

var tmpfun = function(){

return method.apply(obj,arguments);

};

return tmpfun;

}

function Parent(){

this.name = "parent";

}

function Child(){

this.name = "child";

this.getName = function(time){

return time + " " + this.name;

};

}

var parent = new Parent();

var child = new Child();

alert(child.getName(1)); // show 1 child

alert(child.getName.call(parent,2)); // show 2 parent [call & apply 会立即执行]

var tmpfun = child.getName.bind(parent);// bind 不会立即执行

alert(tmpfun(3)); // show 3 parent

</script>

10. js "==" Operator

复制代码 代码如下:

转换规则

如果一个操作数是 Boolean 值,则比较之前将其转成数字:false -> 0, true -> 1;

如果一个操作数是数字,另一操作数是字符串,则比较之前将字符串转成数字;

如果一个操作数是对象,另一操作数是数字或字符串,则比较之前会将对象转为基本类型,

引擎会先尝试调用 valueOf(),如果 valueOf() 没有 override 或返回一个对象,

则引擎会尝试调用 toString(),如果 toString() 没有 override 或返回一个对象,则抛出异常;

如果是两个对象进行比较,则判断它们是否引用同一对象;

如果一个操作数是 NaN, == 将返回 false, != 将返回 true;

null 和 undefined 与其它值比较将返回 false,

但 null == null, undefined == undefined, null == undefined;

参与比较时 null 和 undefined 不能转为其它值;

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类