再读《js高级程序设计》

还是从基础开始吧,一直处于似懂非懂的状态,基础不够扎实!


1.传递方式有按值传递和按引用传递,按引用传递实际上传递的是复制这个引用类型的指针,按值传递,传递这个值的副本,

按函数是按值传递,且js没有重载,并且任何时候都会返回值,如果未指定,则返回undefided,使用argumes[]来访问变量

function a(obj){
	obj.name="1";
	obj=new Object();
	obj.name="2";
	alert(obj.name);
	return obj;
}
//1
var aa=new Object();
aa.name="3";
var bb=a(aa);
alert(bb.name);//2
alert(aa.name);//1


2.基本数据类型为undefined、null、bool、number、string,一种复杂数据类型Object


①object就是一组数据和功能的组合,object动态属性添加删除;

②bool类型

然后引申出平常做的if判断:

http://blog.csdn.net/zhangchuccc/article/details/6073217

再查看一下博客文章关于bool的解读:

http://blog.csdn.net/gudanyehai/article/details/6089255

一个值为 true 或者 false 的表达式。如果需要,非 Boolean 表达式也可以被转换为 Boolean 值,但是要遵循下列规则:

  • 所有的对象都被当作 true。
  • 当且仅当字符串为空时,该字符串被当作 false。
  • null 和 undefined 被当作 false。
  • 当且仅当数字为零时,该数字被当作 false。 
  • "0"会被当做true,但是下面这个问题就来了:
if("0"){
   console.log("aa");
}else{
   console.log("bb")
}//输出aa

console.log("0" == true);//输出false
console.log("0" == false);//输出true



3.typeof和insistantof检测数值类型

typeof用于检测基本数据类型,insistance用于检测引用类型。

typeof 1   number
function a(){}
var b={1,2,3}
typeof  a  function
typeof b object

4.操作符

a++和++a的区别,++a先执行加法再往下运算

位操作符 ~、|、>>、<<、>>>、<<<、^、

补码、反码、


5.作用链,可以使用with和try--catch延长作用于链


6.执行环境,分为全局和函数执行环境



7.对象的创建

创建:记住前提是引用类型。

在js中,对象是指无序键值对的组合。

说是对象的创建,倒不如说是类的定义和实例化。

不要混淆对象和对象实例。

首先别被这些模式吓到,无非就是基于Object的、把函数自身当做构造函数的(constructor)、原型(prototype)的这几种。

基于object的无法解决对象识别的问题;

基于构造函数的,无法解决类方法复用的问题;

基于原型,无法解决

①自定义对象Object实例

对象属性进行赋值操作,其实js引擎内部会进行一次get和set操作,当然你也可以自定义这种get和set操作。

var obj={

name:"Greg"

};

var obj=new Object();

obj.name="Greg";


这是创建对象的一种方式,但是无法解决对象识别的问题,以为使用instanseof时,返回都是Object


以下是工厂模式:

function creatPerson(){

var o=new Object();

o.name="Greg";

return 0;

}

var person1=cretPerson();


②构造函数模式


构造函数也可以像普通函数一样使用。

fucntion Person(){

this.name="Greg";

}

var person1=new Person();

console.log(person1.name);

创建对象的过程:

(1)先创建一个对象;

(2)将构造函数的作用域赋给新对象;

(3)执行构造函数的代码,给对象添加属性

(4)返回新对象




③原型模式

我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,

prototype就是通过调用构造函数的那个对象实例的原型对象,这里请区分函数的原型属性和函数的原型属性指向的原型对象。

关于这种属性的添加问题,先从自身找属性,如果没有,则到原型对象中去找。

function Person(){}

Person.prototype.name="Greg";

var person1=new Person();

var person2=new Person()

person1.name=“Lily”;

console.log(person2.name)  //Lily

p1和p2共有一个Prototype对象

要查看原型对象,可以chorme中看_proto_


//下面这种写法重写了这个原型对象

Person.prototype={

name:“Greg”

}

//所以要把constructor属性加回来并使得他指向正确。

Person.prototype={

constructor:Person,

name:“Greg”

}



④构造函数原型模式

这是默认方式,也是最佳。

funciton Person(){
this.name="Greg";

}

Person.prototype.say=function(){

alert(this.name);

}

这样既解决了属性对于实例的私有和方法的共有。


8.继承的实现

原型链,利用原型让一个引用类型继承另一个引用类型的属性和方法。

构造函数、原型和实例的关系:

每个构造函数都有一个原型对象(他的prototype属性指向原型对象),原型对象都包含一个指向构造函数的指针(他的constructor属性指向构造函数),而实例都包含一个指向原型对象的内部指针([[proto]]).

①原型链继承

function Super(){
this.name="Greg";

}

function Sub(){}

Sub.prototype=new Super();


var sub1=new Sub();

sub1.name="lili";

var sub2=new Sub();

console.log(sub2.name)//lili

因为sub集成了super,super的name属性给了sub的原型对象,所以导致实例共有一个sub1的原型对象的属性name;


⑤构造函数继承

function Super(){
this.name="Greg";

}

function Sub(){

Super.call(this);//这样sub就有了super的name属性,但是父类的方法都要写在函数内部,函数复用无从谈起。

}

var sub1=new Sub();

sub1.name //Greg


③构造函数原型继承集合

function Super(){
this.name="Greg";

}

Super.prototype.say=function(){

alert(this.name);

}

function Sub(){

Super.call(this);//这样sub就有了super的name属性,但是下面sub的原型对象中其实还有name属性,只是没有访问罢了

}

Sub.prototype=new Super();


var sub1=new Sub();

sub1.name="lili";

var sub2=new Sub();

console.log(sub2.name)//lili


9.函数

js中命名函数的地位最高,在js加载时,会先找到函数,加到作用域连最前,比定义变量要高

所以可以理解

var a=1;

function a(){

alert(2);

}

a();

运行时报错“Number is not function”的问题,因为a重写了a()函数


闭包是指有权访问另一个函数作用域中的变量的函数;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值