博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript学习(一)
阅读量:6565 次
发布时间:2019-06-24

本文共 4326 字,大约阅读时间需要 14 分钟。

  hot3.png

#####Javascript学习 Javascript 有五种原始类型 boolean(值为true,false),number(任何整形和浮点数值),sring(字符串),null(空类型),undefined(未定义)。

javascript原始类型的变量直接保存原始值(而不是一个指向对象的指针).当你将原始值赋值给一个变量的时候,该值也被复制到变量中.

举个栗子:

var cloth      = 'nike';var cloth1     =  cloth;console.log(cloth);   //nikeconsole.log(cloth1);  //nikecloth = 'adidas';console.log(cloth)     //adidasconsole.log(cloth1);   //nike

鉴别原始类型的最佳方法是使用typeof操作符

举个例子:console.log(typeof "Nike") //nike

当你运行console.log(typeof null) 会返回object,可以认为null是一个空的对象的指针。

判断一个值是否为空类型的最佳方法还是直接和null比较 console.log(value === null) 使用===的益处是在进行比较时不会将变量强制转换为另一种类型

原始方法:

var name = "Nike";//转换为小写var lowercasename = name.toLocaleLowerCase();console.log(lowercasename); //nike//获取第一个字符var firstLetter = name.charAt(0);console.log(firstLetter); //N//将数字精确到小数点后n位var count = 10;count = count.toFixed(2);console.log(count); // 10.00

javascript 创建对象

var object  = new Object();var object1 = object1;

当一个对象赋值给变量,实际是赋值给这个变量一个指针,将一个变量赋值给另一个变量时,两个变量各获得一份指针的拷贝,指向内存的同一个对象.

#####对象的引用解除&赋值 Javascript语言有垃圾收集功能,将对象指向null既解除引用 object = null ,赋值object.name='nike',console.log(object.name)//nike

#####内建模型实例化 javascript 具有6种内建对象,Array(数组类型),Date(日期和时间累类型),Error(运行期错误类型),Function(函数类型),Object(通用对象类型),RegExp(正则表达式类型)

var items = new Array(); console.log(items); var now   = new Date(); console.log(now); var error = new Error("something is happened"); console.error(error); var func  = new Function("asd"); console.log(func); var obj   = new Object(); console.log(obj); var re    = new RegExp("\\d+");

#####定义一个函数

function reflect(value){	return value;}上面的定义函数的方式和下面定义函数的方式相同,作用是将任何传给函数的参数返回var reflect = new Function("value","return value;");

#####访问属性 属性是对象中保存名字和值得配对,点号是javaScript访问属性最通用的做法.

var array = [];array.push(12345);//is the same as var array = [];array["push"](12345);//is the same asvar array = [];var method = "push"array[method](12345);

#####鉴别类型 函数是最容易鉴别的类型,因为对函数使用typeof操作符时,返回值是function,对非函数的引用类型,typeof都会返回object,所以需要使用insteadof来鉴别引用类型,insteadof操作符可鉴别继承类型,这意味着所有对象都是object实例,所有引用都继承至object的实例

当你给一个创建的变量增加属性的时候

var name = 'nike';    name.type = true;当你打印name属性的时候,不会把.属性打印出来的javascript实际进行的操作:var name = 'nike';var temp = new String(name);temp.type= true;temp = null;    //销毁对象console.log(name);

手动创建的原始封装类型,实际会创建一个object,另外:

var found  =  new Boolean(false);if(found){   console.log("print sth");}

打印这句话是会执行的,因为一个对象在条件判断语句,总被认为是true,无论对象的值等不等于false

####函数 函数声明有两种形式:

第一种是函数声明:

function add(num1,num2){return num1 + num2;}

第二种是函数表达式(匿名函数)

var add = function(num1,num2){return num1+ num2;}

虽然这两种形式较为相似,但是他们有重要的区别,函数声明会被提升至上下文,意味着你可以先使用函数后声明函数

var result = add(5,5);function add(num1,num2){return num1+num2;}

#####排序

var numbers = [1,3,5,2,3,51,6,23];    numbers.sort(function(first,second){                 return first - second;                 });                  console.log(numbers);  //已经被正确排序	numbers.sort();	console.log(numbers);//未被正确排序,因为默认的比较函数是将所有的值转换成字符串进行比较

#####参数 javascript函数的另一个独特之处,可以给函数传递任意数量的参数却不造成错误.

function reflect(){	return value;}console.log(reflect("HELLO"));console.log(reflect("WORLD",24));//求和	function sum(){		var result = 0;		var i = 0;		len = arguments.length;		while(i

#####重载

javascript 不存在自然重载

function message(){		console.log("this is an example");    }		function message(mes){		console.log("this is an example too");	}	message();   // this is an example too

实际上javascript是这样执行的

var say = new Function("message","console.log("1")");var say = new Function("console.log("2");");say("3"); // 2

想要使用javascript的重载机制,可以通过上述的arguments来判断

function say(){			if(arguments.length === 0 ){				console.log("having arguments");		    }else{				console.log("no arguments");				}	}

######this对象 可以用三种方法来改变this,(1)call,(2),apply,(3)bind

(1)call第一个参数指定了函数执行时的值,其余的是传入的参数 (2)apply,传入两个值,this的值和其余数组 (3)bind 可同时传入this&参数,或者传入this&调用参数

function sayNameForAll(label){    console.log(label + ":"+this.name)}var name = "nike";    var person = {        name:'adidas'    }    //使用call 方法更改this 对象    sayNameForAll.call(this,"global");    sayNameForAll.call(person,"adidas");    //使用apply更改this 对象    sayNameForAll.apply(this,["test"]);    sayNameForAll.apply(person,["test"]);    //使用bind方法更改this对象 (1)    var data = sayNameForAll.bind(person);    data("person");    //使用bind方法更改this对象 (1)     var data = sayNameForAll.bind(person,"person");    data();

转载于:https://my.oschina.net/kakoi/blog/747300

你可能感兴趣的文章
POJ 2965 The Pilots Brothers' refrigerator【枚举】
查看>>
我的天$删除注册表$安装mysql最后一步不能启动服务的解决办法
查看>>
Set Matrix Zeroes
查看>>
循环——批量处理数据
查看>>
高精度双目立体视觉测量
查看>>
Flatty Shadow图标自动产生器——在线生成各种扁平化 ICON
查看>>
org.tinygroup.beancontainer-IOC、AOP框架
查看>>
QRCode 二维码开源DLL
查看>>
异步消息处理机制Handler
查看>>
设计题
查看>>
进程中的生产者消费者模型
查看>>
oracle 11g 分区
查看>>
JS复习 基本语法
查看>>
Ambari 介绍
查看>>
栈与队列
查看>>
BeanFactoryPostProcessor和BeanPostProcessor
查看>>
登录时旋转等待效果
查看>>
CUDA中的归约
查看>>
如何遍历安装的SQL实例名称?
查看>>
spring配置 quartz-config.xml
查看>>