JS核心笔记(一)

2、深入理解Ember.js的核心特性 本文深入探讨了 Ember.js 的核心特性,包括绑定机制、计算属性、观察者以及对象模型的应用。详细介绍了双向绑定与单向绑定的工作原理、计算属性的动态计算和性能优化、观察者的监听与副作用触发功能,以及 Ember.js 中的 Mixin 和继承等高级用法。通过构建一个笔记应用程序,展示了如何将这些特性结合使用,实现数据同步、界面更新及复杂业务逻辑处理。 阅读详情

原文地址:http://www.cnblogs.com/xiaofu/articles/1613463.html

本文是在原作者的基础上挑选摘录

1.1 数字转换为字符串
      var number=100;
      var s=number.toString();
      还可以指定转换的基数,
      var s=number.toString(16);
      还有三个函数可以精确指定转换后的数字格式,toFixed(),toExponential(),toPrecision();
      
1.2 字符串转换为数字
      当把一个字符串用于数字环境中,它也会自动地转换为一个数字,
      Var t=”21” * “2”;
      利用这一优点,只要把一个字符串减去0就可以将其转换为一个数字。
      Var t=string_value-0;
      ParseInt()和ParseFloat(),这两个函数可以从字符串开始处转换和返回任何的数字,忽略或舍去非数字部分。
      ParseInt()甚至可以接受另一个参数来指定要解析的数字的基数。合法的范围在2至36之间。
      ParseInt(“012”,2);
      ParseInt(“0x23”);//默认返回10进制
      这两个函数不能把指定的字符串转换为数字,它们会返回NaN.
      ParseInt(“ele”);//返回NaN
      
1.3 undefined
      使用了已经声明但还没有赋值的变量时,又或者使用了一个并不存在的对象属性时,返回的就是这个值。注意这个特殊的undefined值不同于null。但是==运算符却将两者相等的。
      
1.4 in运算符,检查属性是否存在
var point={x:1,y:2};
        var has_x_record=”x” in point;//return true
        var has_z_record=”z” in point;//return false
        
1.5 delete运算符
     它将删除运数所指定的对象的属性、数组元素或变量或函数的属性。如果删除成功返回true,若不能删除,返回false。并非所有的属性和变量都是可以删除的,某些内部的核心和客户端属性不能删除,用var语句声明的用户定义变量也不能被删除。
     注意,删除属性、变量(数组不一样)不只是把它们的值设置为undefined,当删除它们后,它们全部变成未定义的,也即不存在的,再次尝试读取它们时会出错。
     Delete所能影响的只是属性值,并不能影响被这些属性引用的对象,即这些对象只要用其它属性引用就还存在!
     
1.6hasOwnProperty和isPrototypeOf方法
hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中
如果此方法所属的对象是参数的原型对象,那么就返回true。
     Var o={};
     Object.prototype.isPrototypeOf(o);//true
     Object.isPrototypeOf(o);//false
     
1.7函数定义和调用
     JS也不会检测传递的数据是不是那个函数所要求的类型,也不会检测传递给它的参数个数是否正确。如果传递的参数比函数需要的个数多,那么多余的值会忽略掉; 如果传递的参数比函数需要的个数少,那么所被忽略的参数就被赋予undefined。
         
  函数命名
       函数名小写字母开始!
        var f=function(x) {return x*x;}
或
var f=fucntion fact(x) {return x*x;}//也可以加函数名字
var test=(function(x) {return x*x;})(10);//定义后马上调用
 
1.8定义自己的函数属性
     当函数需要使用一个在调用过程中都保持不变的值时,使用function对象的属性比定义全局变量更加方便。也即我们可以为函数定义属性。
     例:
     uniqueInteger.counter=0;
     function uniqueInteger(){
      return uniqueInteger.counter++;
     }
     这里的counter相当于函数的静态局部变量一样!!!


1.9作为方法的函数
      var calculator={
             operand1:1,
             operand2:2,
             compute:function(){
                 this.result=this.operand1+this.operand2;
    }
 }
        calculator.compute()
        任何用作方法的函数都被效地传递了一个隐式的参数,即this,调用对象。
        当一个函数作为函数而不是作为方法调用的时候,这个this关键字引用全局对象.
        当一个嵌套的函数(作为函数)在一个包含的函数之中调用,而这个包含的函数是作为方法调用的,this关键字在包含的函数中有一个值,但是它却引用嵌套的函数体的内部的全局对象。
   
1.20原型和继承(下一篇详细说)
        JS对象从它的原型那里继承属性
           一个对象的原型就是它的构造函数的prototype属性的值。所有的函数都有一个prototype属性,当这个函数被定义的时候,prototype属性自动创建和初始化。Prototype属性的初始化是一个对象,这个对象中带有一个属性。这个属性名为constructor,它指回到和原型相关联的那个构造函数。添加给这个原型对象的任何属性,都会成为被构造函数所初始化的对象的属性。
          原型对象是放置方法和其他不变属性的理想地方。
          注意,继承作为查找一个属性值的过程的一部分。属性并非从原型对象那里复制到新对象,它们只是像那些对象的属性一样地出现。首先,使用原型对象可以显著地减少每个对象的内存数量。其次,即便是在对象创建以后才添加到原型中的属性,对象也可以继承它。
          
        读取和写入继承的属性
                 当读取对象o的属性p的时候,JS首先检查o是否有一个名为p的对象。如果没有,它接下来检查o的原型对象是否有一个p的属性。
                 当写入一个对象的属性值的时候,JS不会使用原型对象。


1.21JS中模拟类
          实例属性
                 每个对象都拥有它的实例属性的一份单独拷贝。默认情况下,JS中的任何对象属性都是一个实例属性,这里我们特指由构造函数创建和初始化的属性。
          实例方法
                 在JS中,通过构造函数的原型对象中的一个属性设置为一个函数值,从而定义了一个实例方法。每个实例方法由一个类的所有实例方法共享。
          类属性
                 也就是为构造函数定义属性,跟普通的函数一样的。
                 Test.Unique=2;
          类方法
                 也就是为让相应函数成为构造函数的一个属性而已。
                 Test.f=function() {}
          私有成员
          JS中没有私有成员。一般把属性设置为以下划线开头的属性。
          来自JS高级程序设计:定义类的常用两种方法
                 1.混合构造函数/原型方式
                        Function Car(scolor,sdoors){
                               This.color=scolor;
                               This.door=sdoors;
                        }
                 Car.prototype.showColor=function (){ alert(this.color);};
                 2.动态原型方法
                        Function Car(scolor,sdoors){
                                      This.color=scolor;
                                      This.door=sdoors;
                                      If( typeof Car._initialized==”undefined”)
                                             {
                                                    Car.prototype.showColor=function(){alert(this.color);};
                                                    Car._initialized=true;
                                             }
                        }
                        
1.22通用对象模型
      toString方法
             当定义一个类时,就为它定义一个toString()方法。
      valueOf方法
             如果一个类需要把对象转换为某种基本类型,一般是转换为数字。那么可以为这个类定义此方法。
             注意,在某些条件下,在把一个对象转换为一个字符串的时候,valueof方法可以比toString()方法更优先使用。因此如果要把类强制转换为一个字符串时,可能需要更加显式调用toString()方法。
             
1.23超类和子类
      例:function Rectangle(w,h){this.width=w;this.height=h;}
      Rectangle.prototype.area=function(){return this.width*this.height;}
             Function DerivedRectangle(x,y,w,h)
             {
                    Rectangle.call(this,w,h);//this就是子类的一个实例对象,那么超类Rectangle成了这个实例对象的一个属性方法来调用,那么这个方法里的this就变成了当前的实例对象,显然里面的属性也成了这个实例对象的属性!!
                    This.x=x;
                    This.y=y;
             }
                    DerivedRectangle.prototype=new Rectangle();
                    Delete DerivedRectangle.prototype.width;
                    Delete DerivedRectangle.prototype.height;
                    DerivedRectangle.prototype.constructor=DerivedRectangle;
                    DerivedRectangle.prototype.contains=function(){return this.x+this.y+this.width+this.height;                      
  }
       首先超类构造函数作为新创建的对象的一个方法调用的。必须显示地把这个原型对象创建为超类的一个实例,然后显示地设置原型对象的constructor属性。另外,可以删除超类构造函数在原型对象中创建的所有属性,因为我们要的原型对象从它的原型那里继承的那些属性。
        
1.23constructor属性
  返回对创建此对象的数组函数的引用。
<script type="text/javascript">
            function employee(name,job,born)
            {
                this.name=name;
                this.job=job;
                this.born=born;
            }
            var bill=new employee("Bill Gates","Engineer",1985);
            document.write(bill.constructor);
        </script>
输出:
function employee(name, jobtitle, born)
{this.name = name; this.jobtitle = job; this.born = born;}

1.24一个变量第一次被声明时赋了值,而接着又再一次声明了它,但没有赋值,那么这时使用它时,它还是显示第一次声明时的值。这种在检测名称空间是否存在时很合适。
       如:var tt=2;
 var tt;
 alert(tt);//显示2

1.25匿名函数
闭包
      由于闭包会携带包含它的函数的作用域,因些会比其它函数占用更多的内存。过度使用闭包可能会导致内存占用过多。一般建议少用闭包。
        关于this对象
        一般this对象在运行时基于函数的执行环境绑定的:在全局环境中,this等于window,而当函数作为某个对象的方法调用时,this等于那个对象。不过。匿名函数的执行环境具有全局性,因此其this对象通常指向window。
               例:  var name = "The Window";
                    var object = {
                        name : "My Object",
                        getNameFunc : function(){
                            return function(){
                                return this.name;
                            };
                        }
                    };
                    alert(object.getNameFunc()());  //"The Window"
                 出现上面的情况的原因是:每个活动对象在被调用时,其活动对象会自动取得两个特殊变量:this和arguments。内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此不可能直接访问外部函数中的这两个变量。
                 
          解决方法,把外部的this对象放在一个闭包能访问到的变量里:
                            var name = "The Window";
            var object = {
                name : "My Object",
           
                getNameFunc : function(){
                    var that = this;
                    return function(){
                        return that.name;
                    };
                }
            };
            alert(object.getNameFunc()());  //"MyObject"
        私有变量
              多查找作用域链中的一个层次,就会在一定程序上影响查找速度。而这正是使用闭包和私有变量明显的不中之处。

2.1 call方法: 
    语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
    定义:调用一个对象的一个方法,以另一个对象替换当前对象。 
    说明: 
    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 
    如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 

2.2 apply方法: 
    语法:apply([thisObj[,argArray]]) 
    定义:应用某一对象的一个方法,用另一个对象替换当前对象。 
    说明: 
    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 
    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

    a、
        function add(a,b)  
        {  
            alert(a+b);  
        }  
        function sub(a,b)  
        {  
            alert(a-b);  
        }  
      
        add.call(sub,3,1);   
        这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。
 
    b、
        function Animal(){    
            this.name = "Animal";    
            this.showName = function(){    
                alert(this.name);    
            }    
        }    
      
        function Cat(){    
            this.name = "Cat";    
        }    
           
        var animal = new Animal();    
        var cat = new Cat();    
        
        //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。    
        //输入结果为"Cat"    
        animal.showName.call(cat,",");    
        //animal.showName.apply(cat,[]);  
        call 的意思是把 animal 的方法放到cat上执行,原来cat是没有showName() 方法,现在是把animal 的showName()方法放到 cat上来执行,所以this.name 应该是 Cat
 
    c、实现继承
        function Animal(name){      
            this.name = name;      
            this.showName = function(){      
                alert(this.name);      
            }      
        }      
            
        function Cat(name){    
            Animal.call(this, name);    
        }      
            
        var cat = new Cat("Black Cat");     
        cat.showName();  
  Animal.call(this) 的意思就是使用 Animal对象代替this对象,那么 Cat中不就有Animal的所有属性和方法了吗,Cat对象就能够直接调用Animal的方法以及属性了.
 
    d、多重继承
        function Class10()  
        {  
            this.showSub = function(a,b)  
            {  
                alert(a-b);  
            }  
        }  
          
        function Class11()  
        {  
            this.showAdd = function(a,b)  
            {  
                alert(a+b);  
            }  
        }  
          
        function Class2()  
        {  
            Class10.call(this);  
            Class11.call(this);  
        }  
        
  很简单,使用两个 call 就实现多重继承了
当然,js的继承还有其他方法,例如使用原型链,这个不属于本文的范畴。说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments 还有 callee,caller..

3.arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。arguments对象用callee属性来引用当前正在执行的函数!!如下:
    function count(a){
        if(a==1){
            return 1;
        } 
        return a + arguments.callee(--a);
    }
    
    var mm = count(10);
    alert(mm);

C# MES通信从入门到精通(1)——串口传输文件 本文详细介绍了在Mes通信领域如何使用串口发送文件,由实战经验总结,堪称MES通信领域的葵花宝典! 阅读详情

相关推荐

【上海大学计算机组成原理实验报告】六、内存系统实验

学习内存访问机制//理解代码和数据的分区存放原理和技术//手动方式把立即数`33H`写入内存`D1H`单元//手动方式把`D1H`单元的内容读出,再送入`ST`单元//在`CP226`汇编语言程序集成开发环境下编写程序//既然有`ORG`微指令,为什么集成开发环境下载到实验箱的目标程序的第一条执行语句最好存放在0号地址?//上海大学计算机组成原理实验//内存系统实验

HackerKevon的博客 3128

webpack报错解决方案

1.[webpack-cli] TypeError: Cannot read property 'tap' of undefined at HtmlWebpackPlugin.apply 。。。 解决方案:确保webpack和html-webpack-plugin版本一致。 比如webpack4使用h-w-p4.*,webpack5使用h-w-h5.*

qq_34527715的博客 683

Cursor聊天记录迁移工具:实现跨设备AI对话同步与备份

在软件开发中,数据持久化与迁移是常见需求,尤其当工具依赖本地存储时。SQLite作为轻量级关系型数据库,因其嵌入式、零配置特性,常被用于存储应用状态与用户数据。其WAL(预写式日志)模式提升了并发性能,但也增加了数据操作复杂性。通过命令行工具与JSON序列化技术,可以实现结构化数据的提取、转换与安全迁移,这对于保障开发资产的连续性与可移植性具有重要价值。例如,在AI辅助编程场景下,开发者与AI的对话记录包含关键的问题分析、解决方案与决策逻辑,是重要的上下文资产。cursor-chat-transfer工具正

weixin_42551967的博客 533

使用html-webpack-plugin 插件报错问题解决方案

使用webpack在构建HTML时需要安装并且使用html-webpack-plugin 插件但是在构建过程中会报错 报错信息如下: TypeError: Cannot read property ‘tap’ of undefined at HtmlWebpackPlugin.apply (D:*\node_modules\html-webpack-plugin\index.js:40:31) at webpack (D:*\node_modules\webpack\lib\webpack.js:51:.

java_vava2的博客 4093

超声波测距的15度魔法:HC-SR04测量角度特性在机器人避障中的实战技巧

本文深入探讨了HC-SR04超声波测距模块在机器人避障中的15度测量角度特性及其应用技巧。通过分析15度角的工程意义、多模块阵列设计、狭小空间优化方案及温度补偿技术,帮助开发者提升机器人环境感知能力。文章特别强调了HC-SR04模块在低成本避障方案中的核心优势与实战优化策略。

weixin_29172963的博客 430

保姆级教程:用QSTEM和DrProbe搞定你的第一张STEM模拟图(附Fe3O4实例文件)

本文提供了一份详细的STEM模拟图像生成教程,涵盖从晶体结构获取到最终图像模拟的全过程。通过QSTEM和DrProbe软件的操作指南,帮助材料科学研究者快速掌握STEM模拟技术,特别适合初学者。教程包含Fe3O4实例文件,详细解析参数设置、计算优化和结果分析等关键步骤。

weixin_33730836的博客 523

HtmlWebpackPlugin打包报错:TypeError: Cannot read property ‘tap‘ of undefined at HtmlWebpackPlugin.apply

解决办法:我使用的webpack版本是4

qq_41885295的博客 707

LSM6DS3TR-C IMU传感器入门:从MEMS原理到姿态解算实战

惯性测量单元(IMU)是现代智能设备实现运动感知的核心部件,其基础原理基于微机电系统(MEMS)技术。MEMS加速度计通过检测质量块在惯性力作用下的位移来测量线性加速度,而陀螺仪则利用科里奥利力效应感知角速度。这种技术使得微型化、低成本的6自由度运动测量成为可能,为机器人、无人机、可穿戴设备等提供了关键的空间姿态和运动状态信息。在实际工程中,开发者需要掌握I2C/SPI通信协议、传感器数据读取与校准,并通过互补滤波等算法融合加速度计和陀螺仪数据,实现稳定的姿态解算。LSM6DS3TR-C作为一款高性价比的6

weixin_28684655的博客 595

webpack报错之TypeError:Cannot read property ‘tap‘ of undefined at HtmlWebpackPlugin.apply

配置webpack生成html文件时,报错TypeError:Cannot read property ‘tap’ of undefined at HtmlWebpackPlugin.apply,我在网络上经过查阅发现自己是HtmlWebpackPlugin安装版本的问题,我修改了一下HtmlWebpackPlugin的安装版本就成功了。如果你也出现同样的错误,查看一下自己的版本是否与webpack的版本兼容,具体查看官网。

weixin_45866961的博客 1175

开坑!双向逆变电源实操系列--第一节PFC

文章摘要 本文介绍了PFC(功率因数校正)的基本概念及其重要性。PFC电路通过储能和功率因数校正两大功能,解决交流电小电压大电流的问题,并减少无功电流损耗。文章对比分析了无源PFC(电感串联式、填谷式、LC谐振式)和有源PFC(升压型、交错并联、图腾柱式)的拓扑结构及适用场景。针对2400W双相逆变电源设计,作者选择图腾柱PFC拓扑,详细阐述了设计思路,包括电气参数计算、性能指标设定、技术重点及风险预判。文章还提供了主电路参数定制计算方法,如BOOST电感值的推导过程,为电源工程师提供实用参考。

lyzh971103的博客 2545

29、5G PUCCH格式及资源配置详解

本文详细解析了5G通信系统中的物理上行控制信道(PUCCH)的不同格式及其资源配置方案。PUCCH负责传输上行控制信息(UCI),包括混合自动重传请求(HARQ)确认信息、调度请求(SR)和信道状态信息(CSI)等。文章从PUCCH的基本概念出发,深入分析了格式0到格式4的特点、编码调制方式、干扰随机化机制以及适用场景,并探讨了PUCCH资源集的配置方法和上行控制信令在PUSCH上的传输机制。通过对比不同格式的传输能力、干扰随机化方式和频率跳变能力,为读者提供了选择合适PUCCH格式的决策依据。最后,文章总

oil88的博客 251

TypeError: Cannot read property 'make' of undefined;html-webpack-plugin\lib\cached-child-compiler.js

PS F:\vue\vue20200414\param8> npm run dev > param8@1.0.0 dev F:\vue\vue20200414\param8 > webpack --config ./webpack.dev.config.js F:\vue\vue20200414\param8\node_modules\webpack\bin\webpack...

eadela的博客 3578

基于YOLO26深度学习框架的人脸识别门禁系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的人脸识别门禁系统实现方法。系统采用YOLO26目标检测算法,通过CSPDarknet53主干网络、特征金字塔结构和注意力机制实现高效人脸检测。研究内容包括数据预处理、模型训练优化和身份验证等关键技术,使用迁移学习策略和CIoU损失函数提升检测精度。该系统可应用于智能安防场景,具有实时性强、识别准确的特点,为门禁管理提供了智能化解决方案。

一键难忘的博客 766

JavaScript学习笔记(一)——核心语法

JavaScript数据类型分为两类:原始类型和对象类型;原始类型包括数字、字符串和布尔值。JavaScript基本数据类型包括:数字、字符串、布尔值、null、undefined、对象(包括数组、函数)。 任意JavaScript的值都可以转换成布尔值,其中undefined、null、0、-0、NaN、”” 将被转换成false。 null、undefined都不包含任何属性和方法(也就是它们之

peakchen90的博客 526

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

《JavaScript核心技术开发解密》读书笔记(一)

《JavaScript核心技术开发解密》读书笔记 一、三种基础数据结构 【 栈(stack )、堆 (heap)、队列(queue)】 JavaScript 作为一门高级程序语言,并没有同其他语言那样区分栈区或堆区,因此这里不做扩展 我们可以简单粗暴地认为在JavaScript中,所有的数据都是存放在堆内存空间中的。 1、栈: 栈表达的是一种数据在内存中的存储区域,通常叫作栈区。(先进后出)[数组的push,pop] 2、堆:堆数据结构通常是一种树状结构。[对象的访问,不用关心对象的属性的顺序] 3、队列:

single15的博客 235

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

js基础笔记学习146-数组去重4

前端

qq_41632427的博客 107

《JS核心原理精讲》笔记(一)数据类型

数据类型概念 数据类型大致可以分成两类来进行存储 基础类型存储在栈内存,被引用或拷贝时,会创建一个完全相等的变量 引用类型存储在堆内存,存储的是地址,多个引用指向同一个地址,这里涉及一个“共享”的概念 共享 举个例子: let a={ name:'lee', age:18 } let b=a; console.log(a.name); b.name='son'; console.log(a.name); console.log(b.name); 打印结果: ‘lee’ ‘son’ ‘son’ 在

努力的V崽兽 207

JavaScript权威设计--JavaScript语言核心(简要学习笔记一)

1.对象名/值得映射 var book={ top:"a", fat:true } 2.访问对象属性 book.top book["fat"] 3.通过赋值创建一个新属性 book.dou="v"; 4.数组 var p=[1,2,3]; p[3]=4;//通过赋值来添加新元素 p[...

weixin_30252155的博客 58

Node.js超光速学习笔记一:3个核心模块、npm、文件操作

超光速学习node.js的笔记 一、使用http模块创建一个简单服务器 1、导入http模块 var http = require('http'); 2、创建服务器 http.createServer((req, res) => { }) 设置http头部,告诉浏览器状态码200(ok),文件类型html,字符集utf-8 res.writeHead(200, { 'Countent-T...

前端大法好 448

vue.js学习笔记(一):什么是mvvm框架,vue.js的核心思想

一:MVVM框架 MVVM框架的应用场景: 1、针对具有复杂交互逻辑的前端应用             2、提供基础的架构抽象             3、提供ajax数据持久化,保证前端用户体验 二:vue.js的核心思想 (一):数据驱动 (二):数据响应原理 (三):组件化 (四)组件设计原则   1:页面上每个独立的可视/可交互区域视为一个...

weixin_34162401的博客 177

读javascript高级程序设计-目录

javascript高级编程读书笔记系列,也是本砖头书。感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多。&lt;br/&gt;本笔记是为了方便日后查阅,仅作学习交流,喜欢本书的童靴建议购买正版。 1.读javascript高级程序设计01-基本概念、数据类型、函数 2.读javascript高级程序设计02-变量作用域 3.读javascript高级程序设...

weixin_34254823的博客 93

JavaScript高级程序设计学习笔记(一)

js高程开坑,基础部分写得很详细很好读,不过阅读速度比较慢,记录一下一些以前没注意过的基础知识点。 第一章 JavaScript的完整实现包括以下三个部分: 1、核心(ECMAScript),提供核心语言功能。 2、文档对象模型(DOM),提供访问和操作网页内容的方法和接口。 3、浏览器对象模型(BOM),提供与浏览器交互的方法和接口。 第二章 script标签 延迟脚本:定义defer属性,表明...

华工Web练习生 5374

《JavaScript编程精解》读书笔记目录汇总

开篇:最近老赵(jeffrey zhao)发起了一个倡导正版书籍的活动(详情)。我非常幸运的获得了老赵免费赠送的一本《javascript编程精解》,如果是常来博客园的肯定不会陌生,正是由汤姆大叔翻译的那本。这里再次感谢老赵。 前几天老赵号召我们这些受赠的同学积极利用资源,把每个人读过的书以读书笔记的形式分享出来,增加交流机会的同时也是对每个人的督促。很赞的一个想法,为了积极响应号召,特意建了一...

weixin_34080903的博客 171
下一篇: js继承
阿榄
博客等级 码龄18年 31粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值