谈谈原生 JS

作者: 技术与健康 | 来源:发表于2018-04-14 18:12 被阅读31次

现在的前端开发,大部分人一上手,就是去用 jquery,zepto,更有就是vue. 而react或者 NG对初学者来说,还是有些门槛。

既然这些库这么好用,还有必要去学习原生JS吗?

原生 JS可以认为是砖块,要构建一个成功的项目或者产品,要求开发人员对数据结构,模块划分,函数划分,异步调用等知识能够真正的从系统设计,软件工程的角度去思考。可是行业发展太快,供不应求,所以一些框架及时出现,降低了开发的门槛。满足了业务需要。

那是不是满足业务需要就够了呢? 其实主要还是看你自己,如果你要做业务专家,那可以主要精力聚焦业务模型,把实现交给他人。

而如果你要做技术专家,那么原生JS还是要精进的,毕竟通过原生JS,你对于DOM,原型, 闭包,立即执行函数,高阶函数,异步通信机制,才能有更加深刻学些和掌握。

通过原生JS,可以让你真正掌握JS这门语言。

(function(global) {
    // body...
    

   function hello() {
    // body...
    console.log("hello");
    alert("hello");
   }

   var data= [
          {id:1,name:"one",price:100},
           {id:1,name:"one",price:100},
            {id:1,name:"one",price:100},
             {id:1,name:"one",price:100},
              {id:1,name:"one",price:100},
               {id:1,name:"one",price:100},
                {id:1,name:"one",price:100}
      ];


      function initPage() {
        // body...
        var ul = createElement("ul");
        ul.className = "list";
         var fragment = document.createDocumentFragment();
        for(var i=0;i<data.length;i++){
          var li = createElement("li");
          li.className = "item";
          var nameEl = createElement("span");
          nameEl.className = "col";
          nameEl.textContent =  data[i].name;
          li.appendChild(nameEl);

          var priceEl = createElement("span");
           priceEl.className = "col";
          priceEl.textContent =  data[i].price;
          li.appendChild(priceEl);

          console.log(nameEl.compareDocumentPosition(document.getElementById("xx")));
           console.log(nameEl.isSameNode(priceEl));
           console.log(nameEl.isContentEditable);
          li.setAttribute("data-value",data[i].price)
          // console.log(li.getUserData("data-value"));
          fragment.append(li);
        }
        ul.appendChild(fragment);
        var attrul = document.createAttribute("id");
        attrul.value ="10";
        ul.setAttributeNode(attrul);
        document.getElementById("xx").appendChild(ul);  

      }
      
       
     
      function createElement(type) {
         return document.createElement(type);

      }

     global.hello = hello;
     global.initPage = initPage;


     global.initModule = {
        hello:hello,
        initPage:initPage
     }

})(window)
image.png

基于原生JS的模块,快速操作DOM的fragment,动态创建DOM元素和属性的方式。

下面这篇文章对一些基础概念做了比较好的讲解
https://blog.csdn.net/liujie19901217/article/details/52088182

1.变量,值类型,引用类型

  • 栈内存中存放的是基本数据类型值,堆内存中存放的是引用类型值,引用类型值在内存中的地址存放在栈中,也就是我们常说的对象对象引用(指针)。

  • 在变量复制方面,基本类型和引用类型也有所不同,基本类型复制的是值本身,而引用类型复制的是内存地址。
    2,this
    3,执行环境及作用域
    4,内存泄漏常见情况

  • 闭包,循环引用,计时器清除

相关文章

  • 谈谈原生 JS

    现在的前端开发,大部分人一上手,就是去用 jquery,zepto,更有就是vue. 而react或者 NG对初学...

  • 20、jQuery 事件机制

    20、jQuery 事件机制 原生js事件与jQuery事件: (1)用原生的js给div注册事件 原生js注册相...

  • WKWebView与原生代码交互

    原生代码调用js js调用原生代码 注册Handler WKScriptMessageHandler 协议 use...

  • 01-JQuery入口函数

    JQuery入口函数 JS原生入口函数特点原生JS会等到DOM元素加载完毕,并且图片也加载完毕才会执行原生的JS如...

  • WKWebView中JS与原生方法交互

    JS与iOS原生方法交互的场景还是比较多的, 项目中用到原生加载h5界面, 然后js与原生交互. 原生端调用js端...

  • jQuery

    jQuery简介 jQuery其实就是原生JS封装之后的一种方法。比起原生JS的操作要方便许多,原生JS的DOM操...

  • jQuery简介

    什么是jQuery? jQuery其实就是原生JS封装之后的一种方法。比起原生JS的操作要方便许多,原生JS的DO...

  • WKWebView与vue.js的交互

    原生调用js的方法 js写法 Swift写法 js调用原生的方法 js写法 Swift写法 1.创建和设置JSOb...

  • 原生JS交互(三)—— UIWebView之JavaScript

    系列原生JS交互(一)—— UIWebView拦截URL原生JS交互(二)—— WKWebView拦截URL 一、...

  • 原生JS实现Tab切换效果和模态框效果

    原生JS实现Tab切换效果 效果展示 原生JS实现模态框效果 效果展示

网友评论

    本文标题:谈谈原生 JS

    本文链接:https://www.haomeiwen.com/subject/tqhlkftx.html