------------------------------------
1.函数的调用方式,与this的指向问题,原型对象中的this
2.对象创建的几种方式!
3.str.replace
页面初始化话之后,初始化的页面DOM元素绑定事件,通过给实例对象设置一个方法.
this.container =$(html)
将事件绑定在容器上由子元素触发,一个独立的功能就是一个容器
在绑定事件的的时候,将实例化对象先保存一下,这样在事件绑定的函数中就能使用这实例化对象了
this.container包含了功能所涉及的额所有dom节点
$('body').append($(html));两次html会产生两个不同的jQuery对象
 
$('.class').parent().parent()     $('.class.parent')
 
抽取一个对象,这个对象包含的子元素具有的方法,如果设置为这个对象的原型方法,这样操作起来会特别不方便.

 
重复使用的东西就可以转化为对象了.
 
 
2.eval函数:在里面书写java代码字符串,可以执行
在evel方法中没有作用域的概念,声明的变量都是全局变量,函数都是全局函数
功能:执行一段代码,封装了一段代码,
函数封装了一段重复执行的代码,eval函数声明的代码不能重复执行
 
跟函数的比较:
    1.封装了一段代码,只能执行一次
    2.eval中声明的变量和函数都是全局的,没有独立作用域的概念
用途:
    用来解析json数据
var json1 = "[{name:"范明","age":"18"}]";
console.log(json1);//执行结果,直接返回一个数组,对于json的容错率高
var json2 ={"hello":"world"};
console.log(json2)//错误
console.log("("json2")")//添加前后的小括号    如果直接写成数组不行吗??
在解析对象的时候,要用到{},在JS语言中即可以表示对象,又可以表示代码块,在eval中
遇到eval中遇到{}就会把它当做语句来处理,为了解决这个问题,在解析单个对象时候
需要在解析的同时添加前后小括号
 
3.静态属性,实例属性
function  Person(){}
Person.abc=10;//改函数加一个属性 函数对象自身的属性
 
var person = new Person();//p1是Person函数的实例
p1.name="zhangsan";//给实例p1添加的实例属性
 
 
4.所有函数都共有的一些静态属性
name:获取函数的名称
function  foo(){}
foo.name   函数foo的函数名
foo.length   打印函数形式参数的个数
 
caller:表示当前函数的调用是在哪个函数内
function f1(){
console.log(f1.caller);//在全局作用域直接调用,结果为null
    f2();
}
function f2(){
    console.log(f2.caller);//f1函数,在哪个函数内部调用了f2那么输出结果就是哪个函数
}
 
arguments是函数内部的一个属性,保存的是实参的相关信息,是一个伪数组
数组:通过Array构造函数创建的对象
伪数组:不是通过Array构造函数创建的随想,可以使用for循环来进行遍历
var  oarr ={0:"zhangsan",1:"lisi",2:''wangwu",length:3}
获取第一个实参:arguments[0]
获取实参的长度 arguments.length

 
 
 
callee属性 
function foo(){
    console.log(argument.callee);//打印的是函数体本身
}
使用argument.callee实现递归   ES5严格模式下,禁止使用这个对象
"use  strict";//开启严格模式  阮一峰 javascript严格模式详解
//严格模式 禁止给一个未声明的变量赋值   number=20;
//严格模式下 eval具有了独立的作用域 在eval中声明的变量和函数 都是局部变量
//禁止使用arguments.callee进行递归调用
 
=递归=函数自己调用自己
可能出现了死递归
 
  1. //注意递归的结束条件
  2. function fn(n){
  3. if(n==1|| n==2){
  4. return1;
  5. }
  6. return fn(n-1)+fn(n-2);
  7. }
 
  1. /*递归查找父元素*/
  2. function find(child, parent){
  3. /*由子元素查找父元素*/
  4. if(child.parentNode === parent){
  5. returntrue
  6. }
  7. /*找到了文档的最顶端*/
  8. elseif(child.parentNode ==null){
  9. returnfalse
  10. }
  11. return find(child.parentNode, parent);
  12. }
 
 
在chrome浏览器中为了调试方便,id元素的id值就是全局变量了,直接可以使用
this +new 
  1. //使用构造函数创建属性:默认值,传参,动态添加,混合模式
  2. //属性的取值和设置器 get set 数值判断 打折
  3. //取值设置 返回格式化的日期
  4. //日期格式转化的工具方法
  5. //共有属性 实例化后外部的人可以访问到
  6. // 私有属性
  7. functionPerson(){
  8. var name="张三";//实例化的对象 无法访问这个属性
  9. }
  10. //最小原则
  11. //this.config={}//保存当前对象中可能用到的临时变量
指针 当我们定义一个变量的,会在内存中开辟一段区域保存这个变量的值
实例化的本质:就是拷贝构造函数属性的过程
属性屏蔽理论:原型中和构造函数中有相同的属性
如果想访问原型中的属性,delete构造函数中的属性 使用Product.prototype
 
 
 
 

caller.arguments.callee.eval的更多相关文章

  1. Function.caller, arguments.caller, arguments.callee, arguments.callee.calller

    Function.caller指向当前函数的调用者,是arguments.caller的替代者 arguments.caller也是指向当前函数的调用者,已被废弃 arguments.callee是对 ...

  2. 搞清arguments,callee,caller

    arguments是什么? arguments是函数调用时,创建的一个类似的数组但又不是数组的对象,并且它存储的是实际传递给函数的参数,并不局限于函数声明的参数列表哦. 尼玛,什么意思? 写个demo ...

  3. JavaScript中的arguments,callee,caller

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments: arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...

  4. arguments.callee 调用自身 caller,callee,apply and call

    一.Arguments该对象代表正在执行的函数和调用他的函数的参数.[function.]arguments[n]参数function :选项.当前正在执行的 Function 对象的名字.n :选项 ...

  5. 理解JavaScript中的arguments,callee,caller,apply

    arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n] 参数function :选项.当前正在执行的 Function 对象的名字. n : ...

  6. js的隐含参数(arguments,callee,caller)使用方法

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数.[function.]arguments[ ...

  7. JQuery Pagenation 知识点整理——arguments,callee,caller,apply应用(20150517)(转)

    arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n]参数function :选项.当前正在执行的 Function 对象的名字. n :选 ...

  8. JavaScript中的內定物件與函式: arguments, callee, caller, this, apply(), call()

    arguments, caller, callee, this都是用在函式(function)內的特殊內定物件.而apply()及call()則是用來呼叫函式的不同作法. arguments可用來取得 ...

  9. arguments对象,caller 和 callee

    arguments对象是比较特别的一个对象,arguments非常类似Array,但实际上又不是一个Array实例. 它指的是函数对象里的参数,且只能在函数内部使用. 使用 检测函数的参数个数,引用属 ...

随机推荐

  1. 原来... 用debug如何查看当前标志寄存器的标志位值?

    -r 用这个指令,得到的信息右下角: NV   UP   EI   PL   NZ   NA   PO   NC这些符号代表的就是标志寄存器里常用标志位的值. 这个是符号值对应表: 溢出标志OF(Ov ...

  2. Mac Office2016 安装及破解

    一.安装包下载地址 http://officecdn.microsoft.com/sg/C1297A47-86C4-4C1F-97FA-950631F94777/OfficeMac/Microsoft ...

  3. KEIL Code RO-data RW-data ZI-data 【转】

    来自:http://jinyong314.blog.163.com/blog/static/30165742201052225415901/ 字节 8位半字 16位字   32位 Code, RO-d ...

  4. Rust <5>:测试

    测试运行顺序:单元测试(同处于源文件中,以 #[cfg(tests)] 标记 mod,以 #[test] 标记 function).集成测试(位于项目根路径下的 tests 目录下,不需要 #[cfg ...

  5. python学习笔记:操作Excle

    import xlwt #写excel import xlrd #读excel import xlutils #修改excel 一.写操作 1.写Excel import xlwt #写excel,导 ...

  6. 破解Xshell6强制升级

    一.背景今天打开xshell时,弹出提示,“要继续使用此程序,您必须应用最新的更新或使用新版本”(如下图) 这是让我强制升级啊,点了确定按钮却提示我已经是最新版了 反正点了半天xshell也没打开.后 ...

  7. Java转型大数据开发全套教程,都在这儿!

    众所周知,很多语言技术已经在长久的历史发展中掩埋,这期间不同的程序员也走出的自己的发展道路. 有的去了解新的发展趋势的语言,了解新的技术,利用自己原先的思维顺利改变自己的title. 比如我自己,也都 ...

  8. 开发效率优化之自动化构建系统Gradle(二)下篇

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将继续从自定义 Gradle 插件开发来介绍自动化构建系统 ...

  9. rem 布局代码

    根据设计稿的高度,除以相对应的数字 <script type="text/javascript"> // 把尺寸放大N倍(N是window.devicePixelRat ...

  10. SQL查询条件生成小工具

    最近运维数据,经常遇到需要在sql条件中个In('',''....)个字符串的情况,于是在网上找了个小工具改造一下,先用着: 效果如图: using System; using System.Coll ...