• JS 基础知识之菜鸟教程(2016-09-30)


    //2016-09-30 重读菜鸟教程上JS教程同时摘录重要知识点
    1.JavaScript 输出几种方式:
    	使用 window.alert() 弹出警告框。
    	使用 document.write() 方法将内容写到 HTML 文档中。
    	使用 innerHTML 写入到 HTML 元素。
    	使用 console.log() 写入到浏览器的控制台。
    
    2.字面量就是常量,变量是可变的可通过变量名来访问。
    
    3.JavaScript 语句向浏览器发出的命令!例如:告诉浏览器向 id="demo" 的 HTML 元素输出文本 "你好 Dolly"
    	document.getElementById("demo").innerHTML = "你好 Dolly";
    
    4.如果重新声明 JavaScript 变量,该变量的值不会丢失:
        var carname = 'Volvo'
        var carname;
        console.log('carname='+carname)//carname=Volvo
    	
    5.创建数组的三种方式
    方式1:类似java
    	var cars=new Array();
    	cars[0]="Saab";
    	cars[1]="Volvo";
    	cars[2]="BMW";
    方式2:类似java
    	var cars=new Array("Saab","Volvo","BMW");
    方式3:json格式创建(推荐)
    	var cars=["Saab","Volvo","BMW"]; 
    	
    6.创建对象,json方式(推荐)
    	var person={
    		firstname : "John",
    		lastname  : "Doe",
    		id        :  5566
    	};
    	取值: 
    	var firstname = person.firstname;
    	var firstname = person['firstname'](推荐)
    	
    7. JavaScript 对象是拥有属性和方法的数据。属性就是眼睛能看到的东西类似化学中的物体的物理性质
    例如:汽车的属性,颜色,品牌,型号,合资与否等等属性(汽车参数配置中的都是属性)
    	  汽车的方法,就是这个东西能干什么? 上路开,刹车,载人等等方法
    	
    8.如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。(这个是错误的我测试过)	
    		    function fun() {
    				carname = 'BMW'
    				console.log("carname++++"+carname)
    			}
    			console.log("carname---"+carname)//提示undefined
    			fun();
    
    9.局部变量在函数执行完毕后销毁。全局变量在页面关闭后销毁。	
    
    10.HTML 事件是发生在 HTML 元素上的事情,可以是浏览器行为,也可以是用户行为!
    	浏览器页面加载完成, onload
    	HTML元素改变, onchange
    	按钮被点击 onclick
    	
    11.	<p id="demo"></p>
    	<button onclick='getElementById("demo").innerHTML=Date()'>现在的时间是??</button>
    	<button onclick="this.innerHTML=Date()">现在的时间是?</button> //this代表的是button标签对象
    	
    12. 字符串创建2种方式
    推荐:var x = "John"; typeof x // 返回 String
    	  var y = new String("John"); typeof y // 返回 Object 
    	  alert(x===y)//false,3等号是绝对相等,数据类型&&值都必须相等,switch(c)用的是就是3等!!!
    	  alert(x==y)//true,  2等号是相对相等,值相等即可,不考虑数据类型
    	
    13.For/In 循环遍历对象的属性
    	var person={fname:"John",lname:"Doe",age:25};
    	var txt = '';
    	for (x in person){// x 为 fname lname age
    		txt += person[x];
    	}	
    	console.log(txt)//JohnDoe25
    	
    14. js中的类型
    	typeof "John"                // 返回 string
    	typeof 3.14                  // 返回 number
    	typeof NaN                   // 返回 number
    	typeof false                 // 返回 boolean
    	typeof [1,2,3,4]             // 返回 object,数组是一种特殊的对象类型
    	typeof {name:'John', age:34} // 返回 object
    	typeof function () {}        // 返回 function
    	var person = null;           // 返回 object 值为 null(空)
    	typeof myCar                 // 返回 undefined (如果 myCar 没有声明)
    	
    	null === undefined           // false
    	null == undefined            // true
    	
    15. JavaScript 类型转换	
    Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值。 
    JavaScript 数据类型: string number boolean object function null undefined
    					   
    String(Date()) ||Date.toString()	//将日期转换为字符串,这个叼!!! 	
    
    Number("3.14")    // 返回 3.14
    Number(" ")       // 返回 0
    Number("")        // 返回 0
    Number("99 88")   // 返回 NaN 	
    Number(false)     // 返回 0
    Number(true)      // 返回 1 	
    Number(new Date())          // 返回 1404568027739 
    new Date().getTime()		// 返回 1404568027739
    
    16.自动类型转换
    16.1:当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。
    5 + null    // 返回 5         null 转换为 0
    "5" + null  // 返回"5null"   null 转换为 "null"
    "5" + 1     // 返回 "51"      1 转换为 "1" 
    "5" - 1     // 返回 4         "5" 转换为 5
    
    16.2:当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法
    // if myVar = {name:"Fjohn"}  // toString 转换为 "[object Object]"
    // if myVar = [1,2,3,4]       // toString 转换为 "1,2,3,4"
    // if myVar = new Date()      // toString 转换为 "Fri Jul 18 2014 09:08:55 GMT+0200"
    
    17. JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。
    	if (typeof myObj !== "undefined" && myObj !== null) //正确
    	if (myObj !== null && typeof myObj !== "undefined") //错误,抛出异常
    
    18.表单验证,当onsubmit为true才会提交表单
    <form name="myForm" action="demo-form.php" onsubmit="return validateForm()" method="post">
    	姓: <input type="text" name="fname">
    	<input type="submit" value="提交">
    </form> 
    
    function validateForm(){//验证账号不能不输入
    	var x=document.forms["myForm"]["fname"].value;
    	if (x==null || x==""){
    		alert("姓必须填写");
    		return false;
    	}
    }
    
    function validateFormEmail(){//验证邮箱
    	var x=document.forms["myForm"]["email"].value;
    	var atpos=x.indexOf("@");
    	var dotpos=x.lastIndexOf(".");
    	if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
    		alert("不是一个有效的 e-mail 地址");
      		return false;
    	}
    }
    
    19.JSON 是用于存储和传输数据的格式,通常用于服务端向网页传递数据 。
    	JSON.parse(jsonStr)	 //JSON 字符串---》 JavaScript 对象。
    	JSON.stringify(jsonObj) //JavaScript ---》JSON 字符串。
    	
    20. href="#"定位锚点 与href="javascript:void(0)"死链接
    
    	<a href="javascript:void(0);">点我没有反应的!</a>
    	<a href="#pos">点我定位到指定位置!</a>
    	<br>
    	...
    	<br>
    	<p id="pos">尾部定位点</p> 
    
    21. 函数创建的两种方式,函数必须调用才会执行
    方式1:var x = function (a, b){return a * b}; //匿名函数赋值给了变量,那么可以通过变量名来访问
    方式2:function x(a, b){return a * b};
    方式3:var x = new Function("a", "b", "return a * b"); //内置的 JavaScript 函数构造器(Function())严重不推荐
    调用:
    var z = x(4, 3);
    
    22. 自调用函数 ---(函数)();
    (function(){var x = "hello"; alert(x)})();
    
    23.隐式参数对象 Arguments
    	x = sumAll(1, 123, 500, 115, 44, 88);
    	function sumAll() {
    		var i, sum = 0;
    		for (i = 0; i < arguments.length; i++) {
    			sum += arguments[i];
    		}
    		return sum;
    	} 
    	
    24.this关键字,this指向函数执行时的当前对象
    1).当函数没有被自身的对象调用时, this 的值就会变成全局对象,在web浏览器中全局对象是window对象
    	function myFunction(){return this;}
    	myFunction();  // 返回 window 对象 ,默认等于window.myFunction();
    	
    	<p id="demo"></p>	
    	var myObject = {
    		firstName:"John",
    		lastName: "Doe",
    		fullName: function() {
    			return this.firstName + " " + this.lastName ;//谁调用了funnName方法,this就是谁!此处this就是myObject
    		}
    	}
    	document.getElementById("demo").innerHTML = myObject.fullName(); //我调用了fullName方法
    	
    2).使用new调用函数,如果函数调用前使用了 new 关键字, 则是调用了构造函数,创建一个新对象,新对象会继承构造函数的属性和方法
    	// 构造函数:
    	function myFunction(arg1, arg2) {
    		this.firstName = arg1;
    		this.lastName  = arg2;
    	}
    	var x = new myFunction("John","Doe");
    	x.firstName
    	
    3). call() 和 apply() 是预定义的函数方法
        var myObj = [1,2,3];
        var myObj = '';
        var myObj = {name: "ckang", money: 8888888}; //我测试的三个对象都可以
         function myFunction(a, b) {
             return a * b;
         }
         console.log(myFunction.call(myObj,10,2));
        
        function myApplyFunction(a, b) {
            return a * b ;
        }
        var args = [50,2];
        console.log(myApplyFunction.apply(myObj,args))
    	
    25. JavaScript 闭包 
    计数器困境:全局变量,任何方法都能访问都可以随意更改,局部变量counter不能自加!
    <p>局部变量计数</p>
    <button type="button" onclick="myFunction()">计数</button>
    <p id="demo">0</p>
    <script>
        function myFunction() {document.getElementById("demo").innerHTML = add();}
        var add = (function () {
            var counter = 0;
            return function () {
                return counter += 10;
            }
        })();
    </script>
    实例解析:
    1.自我调用函数只执行一次,初始化计数器为0;
    2.add 变量 = function(){return counter+=10;} 即return回来的东西给了变量add,如果想要结果那么需要调用变量指向的匿名函数
    3.这就是闭包
    
    
    26. HTML DOM (文档对象模型) 本质是一棵树 Document,RootElement,Element,Attribute,Text
    当网页被加载时,浏览器会创建页面的文档对象模型
    DOM树:Document --Root element -- Element(head(title(text)),body(a(attribute,text),h1(text)))
    js可以改变所有的HTML元素及其属性,CSS样式,所有事件作出反应。
    
    27. 事件  默认冒泡 userCapture = false 
    1.事件传递方式:冒泡和捕获
    <div><p></p></div>
    冒泡: 如果用户点击p,p的事件先被触发,后触发div的点击事件
    捕获:与冒泡相反!
    
    同个元素添加不同类型的事件:注意不能要on
    element.addEventListener("mouseover", myFunction);
    element.addEventListener("click", mySecondFunction);
    element.addEventListener("mouseout", myThirdFunction);
    
    移除由 addEventListener() 方法添加的事件句柄:
    element.removeEventListener("mousemove", myFunction);
    
    跨浏览器解决方法:
    var x = document.getElementById("myBtn");
    if (x.addEventListener) {    // 所有主流浏览器,除了 IE 8 及更早版本
        x.addEventListener("click", myFunction);
    } else if (x.attachEvent) {  // IE 8 及更早版本
        x.attachEvent("onclick", myFunction);
    }
    
    28.JavaScript HTML DOM 元素(节点)
    1. 创建新HTML元素
        <div id="div1">
            <p>这是一个段落</p>
            <p>这是第二个段落</p>
        </div>
        <script>
            var new_p = document.createElement("p");//<p></p>
            var new_p_text = document.createTextNode("我是新建段落的文本");//我是新建段落的文本
            new_p.appendChild(new_p_text);//<p>我是新建段落的文本</p>
    
            var div = document.getElementById("div1")
            div.appendChild(new_p);//将<p>我是新建段落的文本</p>放到div中
        </script>
    
    2. 删除已有的HTML元素 两种方式
    第一种
    	div.removeChild(document.getElementById("p2"))//删除p2元素,从父级元素删除子元素
    
    第二种:先找到需要被删除的元素,然后找到它的父node,再删除!(推荐)
    	    var p1 = document.getElementById("p1")
            p1.parentNode.removeChild(p1);
    
    29.JavaScript 基于 prototype,而不是基于类的。
    
    30.JavaScript Window - 浏览器对象模型BOM
    1.获取浏览器窗口的宽度和高度的通用方法  1904 : 997
           function getWindowWidth() { //该例显示浏览器窗口的高度和宽度:(不包括工具栏/滚动条)
               return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
           }
    
           function getWindowHeight() { //该例显示浏览器窗口的高度和宽度:(不包括工具栏/滚动条)
               return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
           }
    
    2.screen
           var screenW = screen.availWidth;//1920
           var screenH = screen.availHeight;//1040
    
    31.JavaScript Window - 浏览器对象模型    
    BOM 使 JavaScript 有能力与浏览器"对话"。
    js中的全局变量和HTML DOM中的document是window对象的属性
    js中的全局函数是window对象的方法
    
    Window尺寸 (不包括工具栏/滚动条)
    var width = window.innerWidth
                || document.documentElement.clientWidth
                || document.body.clientWidth;
    
    其他Window方法
    window.open() -- 打开新窗口
    window.close() --关闭当前窗口
    window.moveTo(); 移动当前窗口
    window.resizeTo(); 调整当前窗口尺寸
    
    32. Window Screen
    screen.availWidth - 可用的屏幕宽度
    screen.availHeight - 可用的屏幕高度
    
    33.Window Location 用于获取当前页面的地址URL,并把浏览器重定向到新的页面
    location.hostname 返回 web 主机的域名
    location.pathname 返回当前页面的路径和文件名
    location.port 返回 web 主机的端口 (80443)
    location.protocol 返回所使用的 web 协议(http:// 或 https://
    
    document.write(location.href);
    http://www.runoob.com/js/js-window-location.html 
    
    document.write(location.pathname);
    /js/js-window-location.html 
    
    location.assign();//加载新的文档
    <input type="button" value="load new document" onclick="loadNewDoc()"/>
    
    function loadNewDoc(){
        window.location.assign("http://www.w3cschool.cc");
    }
    
    34.Window History 
    window.history 对象包含浏览器的历史
    history.back();//与在浏览器中点击后退按钮相同
    history.forward();// 与在浏览器中点击向前按钮相同
    
    35.window.navigator 
    //有关浏览器的信息
    <div id="example"></div>
    <script>
    txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>";
    txt+= "<p>浏览器名称: " + navigator.appName + "</p>";
    txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>";
    txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>";
    txt+= "<p>硬件平台: " + navigator.platform + "</p>";
    txt+= "<p>用户代理: " + navigator.userAgent + "</p>";
    txt+= "<p>用户代理语言: " + navigator.systemLanguage + "</p>";
    document.getElementById("example").innerHTML=txt;
    </script>
    浏览器代号: Mozilla
    浏览器名称: Netscape
    浏览器版本: 5.0 (Windows)
    启用Cookies: true
    硬件平台: Win32
    用户代理: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
    用户代理语言: undefined
    
    36.js 3种弹窗
    1. alert("sometext")
        window.alert("sometext");
    
    2. window.confirm("sometext");
        var r=confirm("按下按钮");
        if (r==true){
            x="你按下了"确定"按钮!";
        }
        else{
            x="你按下了"取消"按钮!";
        } 
    
    3. window.prompt("sometext","defaultvalue");
        var person=prompt("请输入你的名字","Harry Potter");//
        if (person!=null && person!=""){
            x="你好 " + person + "! 今天感觉如何?";
            document.getElementById("demo").innerHTML=x;
        } 
        
    36. JavaScript 计时事件      定时器
    setInterval() - 间隔指定的毫秒数不停地执行指定的代码。 clearInterval(myVar);
    setTimeout() - 暂停指定的毫秒数后执行指定的代码   clearTimeout(myVar);
    
    时钟:
    window.setInterval("javascript function",milliseconds);
    <script>
     window.onload = function(){
        setInterval(function(){myTimer()},1000);//为什么这样写也可以setInterval(myTimer,1000);
        function myTimer(){
            var d=new Date();
            var t=d.toLocaleTimeString();
            document.getElementById("demo").innerHTML=t;
        }     
     }
    </script>
  • 相关阅读:
    zipfile模块——读取(查看)zip压缩文件
    line[:1]和split(',')
    csv文件——简单读操作01
    读取文件内容——读取一个二进制文件,然后保存到另外一个文件
    zipfile模块——从zip文件中 解压缩
    读写操作文件——open()函数与读写文件01
    文件的操作
    csv文件——简单读操作01
    读写操作文件——open()函数与读写文件02
    读取文件内容——open函数
  • 原文地址:https://www.cnblogs.com/bravolove/p/5923999.html
Copyright © 2020-2023  润新知