1、hasOwnProperty 函数的返回值为Boolean类型。如果对象object具有名称为propertyName的属性,则返回true,否则返回false。

  1. function Box(){
  2. this.a="123";
  3. }
  4. var box1=new Box();
  5. box1.hasOwnProperty("a"); //返回true

如果在原型上添加一个属性,则返回false

// 想要查看对象(包括原型链)是否具备指定的属性,可以使用in操作符

  1. function Box(){
  2. this.a="123";
  3. }
  4. var box1=new Box();
  5. Box.prototype.abc="345"
  6.  
  7. box1.hasOwnProperty("abc"); //返回false;
  8. "abc" in box1 // 返回true

2、复习递归

  1. function box(num){
  2. if(num<=1){
  3. return 1;
  4. }else{
  5. return num*box(num-1);
  6. }
  7. }
  8. box(3);
  9.  
  10. 通过arguments.callee来调用函数本身
  11.  
  12. function box(num){
  13. if(num<=1){
  14. return 1;
  15. }else{
  16. return num*arguments.callee(num-1);
  17. }
  18. }
  19. box(3);

3、简单的回调函数

  1. function $(id){
  2. return document.getElementById(id);
  3. }
  4. Object.prototype.show=function(fn){
  5. if(fn && fn.constructor==Function){ //判断,有fn和fn是一个函数
  6. fn(); //直接执行
  7. }else{
  8. this.style.display="none";}
  9. }
  10. $("c").onclick=function(){
  11. this.show(function(){alert()});
  12. }
  1. //把li节点隐藏,利用回调方法
  2. var appendDiv=function( callback){
  3. var li=document.getElementsByTagName('li');
  4. for(var i=0;i<li.length;i++){
  5. if(typeof callback==='function'){
  6. callback(li[i])
  7. }
  8. }
  9. }
  10. appendDiv(function(node){
  11. node.style.display='none';
  12. })

4、链式调用

  1. function $(id){
  2. return new _$(id);
  3. }
  4. function _$(id){
  5. this.elements = document.getElementById(id);
  6. }
  7. _$.prototype = {
  8. constructor:_$,
  9. hide:function(){
  10. console.log('hide');
  11. return this;
  12. },
  13. show:function(){
  14. console.log('show');
  15. return this;
  16. },
  17. getName:function(callback){
  18. if(callback){
  19. callback.call(this,this.name);
  20. }
  21. return this;
  22. },
  23. setName:function(name){
  24. this.name = name;
  25. return this;
  26. }
  27. }
  28. $('c').setName('xesam').getName(function(name){
  29. console.log(name);
  30. }).show().hide().show().hide().show();

hasOwnProperty 递归 简单回调 链式调用的更多相关文章

  1. js简单实现链式调用

    链式调用实现原理:对象中的方法执行后返回对象自身即可以实现链式操作.说白了就是每一次调用方法返回的是同一个对象才可以链式调用. js简单实现链式调用demo Object.prototype.show ...

  2. 史上最简单的手写Promise,仅17行代码即可实现Promise链式调用

    Promise的使用相比大家已经孰能生巧了,我这里就不赘述了 先说说我写的Promise的问题吧,无法实现宏任务和微任务里的正确执行(也就是在Promise里面写setTimeout,setInter ...

  3. 浅析 JavaScript 链式调用

    对$函数你已经很熟悉了.它通常返回一个html元素或一个html元素的集合,如下: function$(){ var elements = []; for(vari=0,len=arguments.l ...

  4. 《javascript设计模式》笔记之第六章:方法的链式调用

    这一章要实现的就是jQuery的那种链式调用,例子: $(this).setStyle('color', 'green').show(); 一:调用链的结构: 首先我们来看一下最简单的$()函数的实现 ...

  5. 【Java】子类的链式调用

    记录最近在项目设计中遇到的一个小问题. 前提:有这样两个POJO类,它们都可以通过链式调用的方式来设置其属性值,其中一个类继承了另一个类. 问题:通过链式调用,子类对象访问父类方法后,如何使返回对象仍 ...

  6. Swift2.1 语法指南——可空链式调用

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  7. jQuery的XX如何实现?——2.show与链式调用

    往期回顾: jQuery的XX如何实现?——1.框架 -------------------------- 源码链接:内附实例代码 jQuery使用许久了,但是有一些API的实现实在想不通.于是抽空看 ...

  8. 关于JavaScript中的setTimeout()链式调用和setInterval()探索

    http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/arc ...

  9. javascript学习(10)——[知识储备]链式调用

    上次我们简单的说了下单例的用法,这个也是在我们java中比较常见的设计模式. 今天简单说下链式调用,可能有很多人并没有听过链式调用,但是其实只要我简单的说下的话,你肯定基本上都在用,大家熟知的jQue ...

随机推荐

  1. getFields()和getDeclaredFields()的区别

    getFields()获得某个类的所有的公共(public)的字段,包括父类. getDeclaredFields()获得某个类的所有申明的字段,即包括public.private和proteced, ...

  2. CodeForces 103D 分块处理

    题目链接:http://codeforces.com/problemset/problem/103/D 题意:给定一个长度为n的序列.然后q个询问.每个询问为(a,b),表示从序列第a项开始每b项的加 ...

  3. 全文检索原理以及es

    最近要做个文章搜索,对全文检索原理以及es原理进行了一些调研, 1.  es索引文件为多个文本文件描述,索引文件中的内容构成可见 http://elasticsearch.cn/article/86 ...

  4. wenbenfenlei

    ICTCLAS: 该分词系统的主要思想是先通过CHMM(层叠形马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率.基本思路是:先进行原子切分,然后在此基础上进行N-最短路径粗切 ...

  5. 求两条线段交点zz

    "求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面我就现学现卖的把最近才学会的一些"求线段交点"的算法说一说, 希望对大家有所帮助. 本 ...

  6. 【BZOJ】3505: [Cqoi2014]数三角形

    题意 \(n * m(1 \le n, m \le 1000)\)的网格,求顶点在格点上三角形的个数. 分析 假设\(n \le m\) \(ans = \binom{(n+1) * (m+1)}{3 ...

  7. linux 下cmake 编译 ,调用,调试 poco 1.6.0 小记

    上篇文章 小记了: 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记. http://www.cnblogs.com/bleachli/p/4352 ...

  8. Servlet和Struts2同时使用

    在做WEB项目时,要么是Struts+Spring+Hibernate,要是就直接使用servlet.这次碰到一个项目,经理想要把之前一个用servlet做的部分模块移植到当前项目下(Struts+S ...

  9. openx中如何使用site-variable(参数)限制(关键词)广告显示

    openx是个很强大的广告管理系统,可以根据不同的情况显示不同的广告.其中可以根据get参数值的不同来显示,即delivery limitation中的site-variable选项,name表示变量 ...

  10. GregorianCalendar类

    Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现. Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的G ...