博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
精通javascript(看书笔记)
阅读量:6262 次
发布时间:2019-06-22

本文共 3868 字,大约阅读时间需要 12 分钟。

变量的类型检查

//检测类型        var str = "Hello World";        if (typeof str=="string") {
//使用typeof来判断对象类型的一个例子 } if (str.constructor==String) {
//使用构造函数属性来判断对象的类型 //constructor 属性在每个对象中都存在,并一直指向创建它的函数 }

使用constructor的另外一个例子

function User() {        }        var me = new User();        alert(me.constructor == User);//true        var you = new me.constructor();        alert(me.constructor == you.constructor);//true

//用一个变量类型列表严格检查一个参数列表        function strict(types,args) {            if (types.length != args.length) {                throw "Invalid number of arguments. Expected " + types.length + " ,received " + args.length + "  instead.";            }            for (var i = 0; i < args.length; i++) {                if (args[i].constructor!=types[i]) {                    throw "Invalid argument type. Expected " + types[i].name + " ,received " + args[i].constructor.name + " instead.";                }            }        }        strict([String, Number, Array], ["mytest", 12, [11, 22, 33]]);

 

函数curry化

Curry化是一种通过把多个函数填充到函数体中,实现将函数转换为一个新的经过简化的(使之接受的参数更少)函数的技术

function addGenerator(num) {            return function (toAdd) {                return num + toAdd;            };        }        var addFive = addGenerator(5);        alert(addFive(4) == 9);

使用特权方法的例子

function User(name,age) {            var year = (new Date()).getFullYear() - age;            this.getYearBorn = function () {
//创建一个特权方法,能够访问到year变量,同时自身属于公共可访问的 return year; } } var user = new User('angela', 1989); alert(user.getYearBorn() == 26);

动态生成方法的例子

function User(properties) {            for (var i in properties) {                (function (which) {                    var p = i;                    which["get" + p] = function () {                        return properties[p];                    }                    which["set" + p] = function (val) {                        properties[p] = val;                    }                })(this);            }        }        var user = new User({            name: "angela",            age: 26        });        alert(user.name == null);//true   //name属性并不存在  因为它是属性对象的私有变量        alert(user.getname() == "angela");//true  //使用新的getname方法来获得这个值  这个函数是动态生成的        user.setage(22);        alert(user.getage() == 22);//true

静态方法的例子

function User(name, age) {            this.name = name;            this.age = age;        }        var user = new User('angela',26);        User.cloneUser = function (user) {
//静态方法 return new User(user.name, user.age);//创建并返回一个新的用户 } var cloneUser = User.cloneUser(user); alert(cloneUser.name);//angela

 

浏览器的渲染和操作顺序

检测DOM是否可用

function domReady(f) {            if (domReady.done) {
//如果已经加载完成 马上执行函数 return f(); } if (domReady.timer) {
//如果我们已经增加了一个函数 domReady.ready.push(f);//把它加入待执行函数清单中 } else { addEvent(window, 'load', isDOMReady);//添加事件监听 } domReady.ready = [f];//初始化待执行函数的数组 domReady.timer = setInterval(isDOMReady, 13);//尽可能快地检查DOM是否可用 } function isDOMReady() {
//检查DOM是否已可操作 if (domReady.done) {
//如果我们能判断出DOM已可用,忽略 return false; } //检查若干函数和元素是否可用 if (document&&document.getElementsByTagName&&document.getElementById&&document.body) { clearInterval(domReady.timer);//如果可用则停止检查 domReady.timer = null; //执行正在等待的函数 for (var i = 0; i < domReady.ready.length; i++) { domReady.ready[i](); } //记录我们在此已经完成 domReady.ready = null; domReady.done = true; } }

 

XPath

Curry化是一种通过把多个函数填充到函数体中,实现将函数转换为一个新的经过简化的(使之接受的参数更少)函数的技术

转载地址:http://ndzpa.baihongyu.com/

你可能感兴趣的文章
第1天,Python入门
查看>>
canvas裁剪之后的base64转换为上传文件blob对象
查看>>
高级开发全面技能要求
查看>>
数据库主从表,主外键,表更新、删除
查看>>
JavaScript学习之旅-11(原创)
查看>>
背包九讲问题
查看>>
bootstrap模态框可拖动
查看>>
将黑苹果中的的Terminal和Bash for Windows美化了一下
查看>>
Java反射 - 字段
查看>>
sqlserver jbpm 4.4 建表语句
查看>>
如何自学图像编程
查看>>
十分钟上线-函数计算玩转wordpress
查看>>
[学习笔记] JavaScript 闭包
查看>>
手工注入 mutillidae
查看>>
线程间的协作(2)——生产者与消费者模式
查看>>
实战1:对lager测试来分析Erlang的一些特性
查看>>
input checkbox 复选框大小修改
查看>>
【iOS 开发】初识函数式 Swift 实用
查看>>
Java企业微信开发_Exception_02_java.security.InvalidKeyException: Illegal key size
查看>>
9月4日云栖精选夜读 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)...
查看>>