一.我们知道js的基本数据类型包括:number,boolen,string,null及undefined;

看下面的一段代码:

  var abcobject  = {

    firstname:"first",

    lastname:"last",

    sayname:function(){

      alert("i'm" + this.name);

    }

  }

//注意以上的写法,是json格式书写方式,所以每句话之间用"逗号"分割,这叫键值对;

访问的方式:

  (1).abcobject.firstname;

  (2).person["firstname"],注意前面是"firstname"才能这样做;

  (3).person["30"],注意前面是"30"才能这样用;

将person的值赋给P1,引用类型指向的是地址,访问是同块内的基本类型就是赋的值;

2.删除属性的方法:

   var Person = {

    name:"Kobe",

    age:20,

    sayname: function(){

      alert("i'm" + this.name);

    }

  }

删除属性:

  delete person.name;

    注意几个属性:

    writable:可读写性,取true或者false;

    configurable:是否能删除;

    enumerable:枚举性;

看以下的代码:

function Parent(name,age){

this.name = name;

this.age = age;

this.sayName = function(){

console.log(this.name);

}

function Child(name,age)

**this.obj = Parent;

this.obj(name,age);

delete this.obj;**

}

var c = new Child("zahngsan",22);

console.log(c.name);

//输出zhangsan;Chlid继承了Parent的属性;

除开这种call方法之外,还有apply的方法,看下面的代码:

**段的代码可以用Parent.call(this,name,age);代替;而call方法和apply方法意义相同,用法稍有不同:

function Parent(name,age){

this.name = name;

this.age = age;

this.sayName = function(){

console.log(this.name);

}

function Child(name,age)

apply(this,name,age);

}

var c = new Child("zahngsan",22);

console.log(c.name);

##2.原型链的方法##

function Parent(name,age){

this.name = name;

this.age = age;

this.sayName = function(){

console.log(this.name);

}

}

Parent.prototype.sayAge = function (){

console.log(this.age);

}

function Child (name,age,sex){

this.constructor(name,age);

this.sex = sex;

}

child.prototype = new Parent();

var c = new Child("zhangsan",30);

c.sayName;

c.sayAge;

这是重点,应该准确掌握理解:

##3.混合模式##

function Parent(name,age){

this.name = name;

this.age = age;

this.sayName = function(){

console.log(this.name);

}

}

有些不同;但是并未写完;

##闭包##

其实闭包我们平时使用很多;只是并未提及,下面就是一个例子:

function fn(){

var max =10;

return function bar(x){

if (x > max){

console.log(x);

}

}

}

var f1 = fn();

f1(15)//15

函数里面有函数,我们发现在函数执行完成之后x未被销毁;

还有匿名函数的方式:

<body>

<ul id="ul">

<li>1</li>

<li>2</li>

<li>3</li>

<li>4</li>

<ul>

<li>1</li>

<li>2</li>

<li>3</li>

<li>4</li>

</body>

<script>

var lis = document.getElementById("ul").getElementsByTagName("li");

for(var i = 0; i < lis.length; i++){

(function(i){

lis[i].onclick = function(){

console.log(i);

}

}(i));

}

注意这两个i不同,第一个为形参;第二个是我们定义的循环变量;

这里的i没有被销毁;

JS对象基础 闭包等的更多相关文章

  1. JS对象基础

    JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性 属性是与对象相关的值. 访 ...

  2. js对象基础写法练习

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

    函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) {             return i1 + i2;//如果不写return返回 ...

  4. 【学习笔记】深入理解js原型和闭包(2)——函数和对象的关系

    上文(深入理解jS原型和闭包(1)——一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断. var fn = function () { }; console.log ...

  5. 【学习笔记】深入理解js原型和闭包(1)—— 一切都是对象

    “一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的运算符——typeof.typeof ...

  6. 认识JS的基础对象,定义对象的方法

    JS的基础对象: 1.window       //窗口对象 2.document   //文档对象 3.document.documentElement      //html对象 4.docume ...

  7. javascript基础-js对象

    一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = ...

  8. 前端(十七)—— jQuery基础:jQuery的基本使用、JQ功能概括、JS对象与JQ对象转换、Ajax简单应用、轮播图

    jQuery的基本使用.JQ功能概括.JS对象与JQ对象转换.Ajax简单应用.轮播图 一.认识jQuery 1.什么是jQuery jQuery是对原生JavaScript二次封装的工具函数集合 j ...

  9. JavaScript基础—闭包,事件

    Js基础-闭包,事件 1:js中的闭包 概念:在一个函数内部又定义了一个函数,内部函数能访问到外部函数作用域范围内的变量,这时这个内部函数就叫做闭包,无论这个内部函数在哪里被调用都能访问到外部函数作用 ...

随机推荐

  1. 【LuoguP4887】第十四分块(前体)

    题目链接 题意 区间两数异或在二进制下有 \(k\) 个 \(1\) 的对数. Sol 普通莫队的话,如果要实时维护好区间内的答案需要支持区间对一个数求答案. 直接做不是很好做,容易发现其实这也就是一 ...

  2. linux运维、架构之路-K8s通过Service访问Pod

    一.通过Service访问Pod 每个Pod都有自己的IP地址,当Controller用新的Pod替换发生故障的Pod时,新Pod会分配到新的IP地址,例如:有一组Pod对外提供HTTP服务,它们的I ...

  3. Markdown 标记语言指北 - 源码

    这是上一篇博客的源代码. 这是班刊约稿的一篇文章. 全文约6000字, 预计需要 60 分钟读完. # Markdown 标记语言指北 #### TOC 1. [什么是 Markdown?](#%E4 ...

  4. css grid 随笔

    原文出自Arien的博客https://www.w3cplus.com/css3/line-base-placement-layout.html 首先定义一个网格 1.可以给父容器的display属性 ...

  5. Confluence 6 预览一个文件

    当你浏览一个页面的时候,单击一个图片,文件缩略图或者链接将会运行预览. 预览视图包括了从远程 Web 页面导入的图片文件和已经附加到页面中的文件(尽管有可能这些文件没有在页面中显示). 在预览中你可以 ...

  6. CF 352 D 罗宾汉发钱 模拟题+贪心

    D. Robin Hood time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  7. websocket协议解决消息发送问题 Could not decode a text frame as UTF-8.

    在使用websocket 时出现了Could not decode a text frame as UTF-8 首次连接成功当发送消息时,出现了编码作错误 第一请求页面时,连接成功 当发送消息时,不加 ...

  8. unittest详解(六) 断言

    我们在执行测试用例时,怎么来判断这条用例是否通过呢?唯一的办法就是拿实际结果和预期结果进行比较,如果一致用例就是通过的,否则用例就是失败的.在python中这种比较的方法就叫做断言,unittest框 ...

  9. 数据重塑图解—Pivot, Pivot-Table, Stack and Unstack

    Pivot pivot函数用于创建一个新的派生表,该函数有三个参数:index, columns和values.你需要在原始表中指定这三个参数所对定的列名,接下来pivot函数会创建一个新的表格,其中 ...

  10. C++入门经典-例5.19-指针的引用与传递参数

    1:引用传递参数与指针传递参数能达到同样的目的.指针传递参数也属于一种值传递,其传递的是指针变量的副本.如果使用指针的引用,就可以达到在函数体内改变指针地址的目的.运行代码如下: // 5.19.cp ...